Was ist los mit dieser SQLite-Abfrage?

  • Ich kann garantieren, dass die Datenbank alle Spalten und Werte enthält, nach denen ich suche.

    Die Abfrage wird mit CursorOutOfBounds zurückgegeben. Hat jemand eine Idee warum und was soll ich testen?

         Cursor c = db.rawQuery("SELECT * FROM table WHERE _id="+nextvalue+"" , null);
        c.moveToFirst();
        numval = c.getInt(c.getColumnIndex("_id"));                 
        c.close();
     

    Logcat-Ausgabe

     11-22 00:08:36.614: ERROR/AndroidRuntime(25405): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
     
    22 November 2011
    Dave Newton
2 answers
  • Die Abfrage gibt eine leere Ergebnismenge zurück. Es gibt keine Datensätze mit der ID von nextvalue (was auch immer das ist). Sie sollten überprüfen, ob moveToFirst() erfolgreich war:

     if (c.moveToFirst()) {
        numval = c.getInt(c.getColumnIndex("_id"));
    } else {
        // no results returned
    }
    c.close();
     
    22 November 2011
    Ted Hopp
  • Befindet sich die Anweisung in bindview von CursorAdapter? Wenn ja, versuchen Sie, c.moveToFirst()

    zu entfernen
    22 November 2011
    Frank Cheng