2010-11-23 11 views
0

Könnte jemand bitte mir helfen zu verstehen, warum der folgende Block des Codes diesen Fehler wirft? Es macht mich wahnsinnig, das zu debuggen.Android Cursor Kopfschmerzen

public int getContactsCountByGroupId(int id) { 
     Cursor c = db.rawQuery("SELECT COUNT(*) AS total FROM msg_group_lu WHERE group_id = ?", new String[] {String.valueOf(id)}); 
     DatabaseUtils.dumpCursor(c); 
     int retval = c.getInt(c.getColumnIndex("total")); 
    return retval; 
} 

Der Dump scheint darauf hinzuweisen; 0 { total = 0 }

Das sagt mir, dass ist es, Daten in Spalte sind 0, aber doch jedes Mal versucht, die Zeile mit diesem Code auszuführen;

Es gibt mir diesen Fehler; CursorIndexOutOfBoundsException: Index -1 angefordert, mit der Größe von 1

Ich habe alles versucht, was ich denken kann, um zu versuchen, dies zu beheben und bin völlig ratlos. :(

Ich hoffe, dass jemand weiß, was dies verursacht.

Antwort

2

versuchen c.moveToNext(); zu schreiben, bevor die Zeile Ausführen

int retval = c.getInt(c.getColumnIndex("total")); 

Die Cursor-Position wird nun -1. Nach dem MoveToNext Befehl ausführen kommt es an der 0. Position

+2

Wow! Das war's. Danke, khotmanish! Aber warum in aller Welt würde die Abfrage den Cursor-Zeilenindex auf -1 setzen? Das macht keinen Sinn. – Skittles