sql >> Base de Datos >  >> RDS >> SQLite

Poner los datos del cursor en una matriz

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

"i" no es el índice de la fila del cursor, es el índice de la columna. Un cursor ya está posicionado en una fila específica. Si necesita cambiar la posición del cursor. Utilice cursor.move o moveToXXXX (consulte la documentación).

Para getString/Int/Long, etc., solo necesita decirle al cursor qué columna desea. Si no conoce el índice de columna, puede usar cursor.getColumnIndex("yourColumnName") .

Tu ciclo debería verse así:

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