Je travaille avec la base de données SQLite dans le studio android. Mon code onCreate:requête sans travail
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_MOODS_TABLE = "CREATE TABLE " + TABLE_NAME_MOODS + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_MOODS + " TEXT NOT NULL)";
db.execSQL(CREATE_MOODS_TABLE);
}
et mes requêtes:
@Override
public Uri insert(@NonNull Uri uri, ContentValues values) {
final SQLiteDatabase db = mMindsDbHelper.getWritableDatabase();
final SQLiteDatabase db2 = mMindsDbHelper.getReadableDatabase();
long id = db.insert(TABLE_NAME_MOODS, null, values);
String query = "SELECT * FROM "+ TABLE_NAME_MOODS;
Cursor returnCursor;
returnCursor = db2.rawQuery(query, null);
return null;
}
Pour le débogage j'ai ajouté requête de sélection à cet endroit. lorsque le débogueur atteint ces points, l'ID de retour de db.insert renvoie une valeur (c'est-à-dire l'ID des nouvelles valeurs insérées). Mais select query ne retourne rien d'utile (il renvoie mCount comme -1). J'ai essayé aussi la requête suivante mais le résultat est le même.
returnCursor = db.query(TABLE_NAME_MOODS,
projection,
selection,
selectionArgs,
null,
null,
sortOrder);
Où est le problème.
Vous obtenez un curseur 'returnCursor' mais vous ne faites rien avec. Avez-vous essayé d'itérer ce curseur? –
@TimBiegeleisen Dans les fenêtres de débogage, il affiche tous les détails de returnCursor. Et il retourne seulement les noms de colonnes, et mCount comme -1; –
@EnigmaticMind curseur jusqu'à ce que vous faites quelque chose avec cela montrera cela. Essayez d'ajouter la ligne 'returnCursor.getCount();' puis déplacez-la pour retourner null; dans le débogage. Vous verrez alors le compte. Vous pouvez aussi essayer 'returnCursor.movetoFirst()' comme une ligne (etc). Vous pouvez également trouver cela utile [Existe-t-il des méthodes qui aident à résoudre les problèmes courants de SQLite?] (Https://stackoverflow.com/questions/46642269/are-there-any-methods-that-assist-with-resolving-common -sqlite-questions) – MikeT