2010-11-23 6 views
0
maux de tête

Quelqu'un pourrait-il me aider s'il vous plaît comprendre pourquoi le bloc de code suivant maintient lancer cette erreur? Ça me rend fou d'essayer de déboguer ça.curseur Android

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; 
} 

La décharge semble indiquer; 0 { total = 0}

Cela me dit qu'il ya des données dans la colonne 0, mais encore chaque fois qu'il tente d'exécuter la ligne avec ce code;

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

Il me donne cette erreur; CursorIndexOutOfBoundsException: Index -1 demandé, avec la taille de 1

J'ai essayé tout ce que je peux penser pour essayer de résoudre ce problème et je suis complètement perplexe. :(

J'espère que quelqu'un sait ce qui cause cela.

Répondre

2

essayez d'écrire c.moveToNext(); avant d'exécuter la ligne

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

La position du curseur est maintenant -1. Après l'exécution de la commande MoveToNext il est en position 0e

+2

Wow, c'était ça Merci, khotmanish! Mais pourquoi diable la requête aurait-elle mis l'index de la ligne du curseur à -1? Cela n'a aucun sens. – Skittles

Questions connexes