Auswahl einer Zelle aus SQLite Datenbank

  • 4 Antworten
  • Neuester Beitrag
Diskutiere Auswahl einer Zelle aus SQLite Datenbank im Android App Entwicklung im Bereich Betriebssysteme & Apps.
D

donbilbo

Neues Mitglied
Hallo Leute.

Hab folgenden Code, um eine gezielte Zelle aus einer Datenbank auszulesen, doch leider stürzt mir die App beim Aufruf dieser Funktion ab und ich verstehe die Fehlermeldung nicht:

Code:
Code:
    public int getAge(){
    	SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery("SELECT * FROM persons WHERE name = " + MainActivity.selectedPerson, null);
        int age = cursor.getInt(3);
        cursor.close();
        db.close();
        return age;
    }
Der LogCat gibt mir folgenden Fehler aus:
Code:
08-27 15:52:55.652: E/AndroidRuntime(2735): android.database.sqlite.SQLiteException: near "@4146d260": syntax error: , while compiling: SELECT * FROM persons name = android.widget.TextView@4146d260
Es folgen noch andere Fehler, aber ich glaube die ergeben sich alle aus der oberen.

Weiß jemand was das genau bedeutet bzw. hat eine Lösung?

Danke und Gruß,
DonBilbo
 
E

Elmar1272

Neues Mitglied
Hey,

so wie ich das sehe übergibst du nur die ID deines TextView Widgets. Versuchs mal mit:

MainActivity.selectedPerson.getText.toString()

Vielleicht hilfts...

Gruß
Elmar
 
D

donbilbo

Neues Mitglied
stimmt, danke. aber ich kriege nun die Meldung:

Code:
08-27 18:33:01.486: E/AndroidRuntime(9516): android.database.sqlite.SQLiteException: no such column: Max: , while compiling: SELECT * FROM persons WHERE name = Max
der Name existiert aber in der Datenbank. das ist echt komisch.

Der ursprüngliche Beitrag von 18:37 Uhr wurde um 20:02 Uhr ergänzt:

Ok. Hab herausgefunden, dass der String in Gänsefüßchen stehen muss, damit es als String erkannt wird, also so:

Code:
Cursor cursor = db.rawQuery("SELECT name FROM persons WHERE name = '" + MainActivity.selectedPerson.getText().toString() + "'", null);
Dafür bekomme ich nun eine andere Fehlermeldung:

Code:
08-27 19:43:47.573: E/AndroidRuntime(6161): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
 
E

Elmar1272

Neues Mitglied
Hi,

du musst erst den Cursor auf die erste Position setzen. dafür benutzt du

cursor.moveToFirst();

Gruß
E.
 
D

donbilbo

Neues Mitglied
Danke. Läuft jetzt :D. Für die, die ein ähnliches Prob haben, hier ist der Code:

Code:
public int getAge(){
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM persons WHERE name = ?", new String[] { MainActivity.selectedPerson.getText().toString() });

    int age;
    if(cursor.moveToFirst())
        age = cursor.getInt(3);
    else
        age = 0;

    cursor.close();
    db.close();
    return age;
}
Gruß,
 
Ähnliche Themen - Auswahl einer Zelle aus SQLite Datenbank Antworten Datum
5