我有以下代码,我使用嵌套游标。它们都不是null但我收到错误 " android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0"在内部光标上。
Cursor cursor3 = null;
Cursor cursor2 = db.getAllFriendsChat();
cursor2.moveToFirst();
while (!cursor2.isAfterLast()) {
String number = cursor2.getString(cursor2.getColumnIndexOrThrow(ChatModel.COLUMN_CHAT_SENT_TO));
cursor3 = db.getName(number);
String name = cursor3.getString(cursor3.getColumnIndexOrThrow(db.KEY_NAME));
db.insertList(name, number);
cursor3.close();
cursor2.moveToNext();
}
cursor2.close();
getName()方法:
public Cursor getName(String phone) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery("select * from " + TABLE_STUDENTS + " where phone_number = " + phone, null);
if (c != null) {
c.moveToFirst(); //***I see that this statement is executed.***
}
return c;
}
我无法理解我在做错的地方。是否有不同的方法来处理sqlite db中的嵌套游标。请帮助。
谢谢!
答案 0 :(得分:0)
rawQuery()
永远不会返回null
。
要测试游标是否为空,您必须检查moveToFirst()
是否成功,或致电isAfterLast()
。