SQLite
 sql >> Database >  >> RDS >> SQLite

Mettere i dati del cursore in un array

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

"i" non è l'indice della riga del cursore, è l'indice della colonna. Un cursore è già posizionato su una riga specifica. Se è necessario riposizionare il cursore. Usa cursor.move o moveToXXXX (vedi documentazione).

Per getString/Int/Long ecc. devi solo indicare al cursore quale colonna desideri. Se non conosci columnIndex puoi usare cursor.getColumnIndex("yourColumnName") .

Il tuo ciclo dovrebbe assomigliare a questo:

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()]);
}