2010-11-23 18 views
0

次のコードブロックがこのエラーをスローし続ける理由を誰かに教えてください。これは私を夢中にさせて、これをデバッグしようとしています。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; 
} 

ダンプはこれを示すようです。 0 { 合計= 0 }

これは、列0にデータがあることを私に言って、まだたびに、このコードの行を実行しようとします。

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

このエラーが表示されます。 CursorIndexOutOfBoundsException:-1のサイズでインデックスが要求されました

私はこれを修正しようと考えていますが、完全に困惑しています。 :(

私は誰かがこれを引き起こすものを知っている願っています。

答えて

2

カーソル位置が今ある-1ライン

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

を実行する前にc.moveToNext();を書いてみてください。moveToNextのコマンドを実行した後、それは0番目の位置に来ます。

+2

うわー、ありがとう、khotmanish!しかし、なぜ地球上のクエリがカーソル行インデックスを-1に設定するのだろうか?それは意味をなさない。 – Skittles

関連する問題