Auswahl einer Zelle aus SQLite Datenbank

D

donbilbo

Neues Mitglied
0
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
 
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
 
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
 
Hi,

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

cursor.moveToFirst();

Gruß
E.
 
  • Danke
Reaktionen: donbilbo
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

R
Antworten
6
Aufrufe
1.021
swa00
swa00
S
Antworten
33
Aufrufe
2.722
Sempervivum
S
D
  • Data2006
Antworten
14
Aufrufe
546
jogimuc
J
Zurück
Oben Unten