SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Colocando dados do cursor em uma matriz

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

"i" não é o índice da linha do cursor, é o índice da coluna. Um cursor já está posicionado em uma linha específica. Se você precisar reposicionar o cursor. Use cursor.move ou moveToXXXX (consulte a documentação).

Para getString/Int/Long etc. você só precisa informar ao cursor qual coluna você deseja. Se você não conhece o columnIndex, você pode usar cursor.getColumnIndex("yourColumnName") .

Seu loop deve ficar assim:
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()]);
}