SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Einfügen von Cursordaten in ein Array

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

"i" ist nicht der Zeilenindex des Cursors, sondern der Spaltenindex. Ein Cursor ist bereits auf einer bestimmten Zeile positioniert. Wenn Sie Ihren Cursor neu positionieren müssen. Verwenden Sie cursor.move oder moveToXXXX (siehe Dokumentation).

Für getString/Int/Long usw. müssen Sie dem Cursor nur mitteilen, welche Spalte Sie möchten. Wenn Sie den Spaltenindex nicht kennen, können Sie cursor.getColumnIndex("yourColumnName") verwenden .

Ihre Schleife sollte so aussehen:

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