我有以下代码:
Cursor cursor = mDB.rawQuery(query, null);
cursor.moveToFirst();
do {
//do stuff
} while (cursor.moveToNext());
cursor.close();
query = "<some sql code>";
cursor = mDB.rawQuery(query, null);
答案 0 :(得分:1)
你可以做到这一点,但它并没有做你认为的那样。你没有重新打开光标。您正在设置变量以引用新查询的新光标。
我在数据库查询中看到了null返回。我保留空检查。开销量很小。
答案 1 :(得分:0)
关于close()
的{{3}}表示您将无法再次使用光标:
关闭Cursor,释放所有资源并制作它 完全无效。与deactivate()不同,对requery()的调用不会 使光标再次有效。
如果您在适配器中使用光标,则可以在设置新光标后关闭旧光标。 swapCursor()
返回旧的Cursor,如果没有设置游标,则返回null,如果尝试交换先前设置的游标的同一实例,则返回null。知道了,你可以尝试这样的事情:
Cursor c = adapter.swapCursor(cursor);
if(c != null)
c.close();