SQLite - Abfrage von int-Wert - CursorIndexOutOfBoundsException

  • 4 Antworten
  • Letztes Antwortdatum
D

DragonGirl

Neues Mitglied
0
Hallo!

Ich bin gerade am verzweifeln wegen einer SQL-Abfrage, die eigentlich so einfach gewirkt hat. Wahrscheinlich ist es auch nur eine Kleinigkeit und ich komme nicht darauf. :unsure:

Den Ausschnitt habe ich mal vereinfacht und durch mehrmaliges Testen mit Zwischenausgaben, habe ich festgestellt, dass es an der Stelle "c.moveToNext()" hängt.

Das Problem ist wahrscheinlich, dass "zahl" ein int-Wert ist. Mit String-Werten funktionierte bis jetzt nämlich alles einwandfrei.

Code:
int zahl = 3;
        Cursor c = connection.rawQuery("select lnr from zuordnung where bnr = '" + zahl + "'", null);
        c.moveToNext();

Exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{......} android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

Hoffentlich kann mir jemand helfen :)
 
Was hat bnr in der Datenbank für einen Typ? TEXT oder INTEGER?

Im einfachsten Fall musst du nur die einfachen Quotes weglassen:

Code:
Cursor c = connection.rawQuery("select lnr from zuordnung where bnr = " + zahl, null);

Schöner und sicherer wäre aber diese Variante:

Code:
Cursor c = connection.rawQuery("select lnr from zuordnung where bnr = ?", new String[]{ String.valueOf(zahl) });
 
Bei diesem Vorschlag kommt die gleiche Fehlermeldung.

bnr ist vom Typ Integer.

Meine anderen Datenbankeinträge sind vom Typ Varchar. Wenn ich an dieser Stelle etwas vom Typ Varchar abfrage gibt es keine Probleme. Nur bei Integer.
Ich hatte schon überlegt, die Datenbank abzuändern und aus der Spalte einen Varchar zu machen. Das wäre aber nicht so toll, weil bnr eigentlich automatisch hochgezählt werden sollte.
 
ich mach es immer so

Cursor cur = ....

if (cur != null) {
if (cur.movetofirst) {
do {

}while(cur.movetonext());
}
}


du hast kein movetofirst.
 
Es funktioniert jetzt.

Danke für die Hilfe :biggrin:
 
Zurück
Oben Unten