SQLite
 sql >> Base de données >  >> RDS >> SQLite

Mettre les données du curseur dans un tableau

names.add(cursor.getString(i));

"i" n'est pas l'index de ligne du curseur, c'est l'index de colonne. Un curseur est déjà positionné sur une ligne spécifique. Si vous avez besoin de repositionner votre curseur. Utilisez curseur.move ou moveToXXXX (voir documentation).

Pour getString/Int/Long etc., il vous suffit de dire au curseur quelle colonne vous voulez. Si vous ne connaissez pas le columnIndex, vous pouvez utiliser cursor.getColumnIndex("yourColumnName") .

Votre boucle devrait ressembler à ceci :

public String[] getContacts(){
    Cursor cursor = getReadableDatabase().rawQuery("SELECT name FROM contacts", null);
    cursor.moveToFirst();
    ArrayList<String> names = new ArrayList<String>();
    while(!cursor.isAfterLast()) {
        names.add(cursor.getString(cursor.getColumnIndex("name")));
        cursor.moveToNext();
    }
    cursor.close();
    return names.toArray(new String[names.size()]);
}