在我的应用程序中,我有一个Cursor字段,在我的Android服务的onStart()
方法中,我通过从我的数据库中提取记录来创建它。当我在onStart()
方法中查看我的光标时,我找到了许多记录但是当我尝试在我的trigger()
方法中使用它时,它没有记录。
该领域
private Cursor c;
c = dbHelper.fetchAllRecords();
()
c.getCount()
返回0
我没有比我的onDestroy()
方法
答案 0 :(得分:1)
很可能光标实际上并没有“丢失记录”,而是在每次迭代记录之前忘记c.movetofirst()
。
换句话说,当您遍历光标记录时,记录指针会向上,向上,向上,直到它“超过最后一条记录”。因此,为了再次遍历游标,您必须通过执行c.movetofirst()
来重置记录指针。
c.moveToFirst();
while (!c.isAfterLast())
print ("Data: " + c.getString(0));
然后再次运行相同的while循环将不会执行,因为光标的记录指针尚未重置:
while (!c.isAfterLast())
print ("Data: " + c.getString(0));
(没有打印)
因此,您实际上需要将第二个代码块更改为:
c.moveToFirst();
while (!c.isAfterLast())
print ("Data: " + c.getString(0));