【发布时间】:2015-04-29 21:47:36
【问题描述】:
我在我的 android 应用程序中使用 sqlite 来存储数据。 每次启动应用程序时,我都会从服务器获取一些数据并将其存储在客户端中。现有数据更新和新数据插入到数据库中。
但在很多情况下,当我通过查询从 DB 访问现有项目时,我会从 DB 获得空白光标
"select * from Table where itemId = x"。就好像我在更新之前从设备/模拟器中提取数据库一样,我可以看到数据存在于数据库中。
仅当我从服务器获取许多数据并与现有数据进行比较时,才会发生此问题。 比较是在循环中完成的,每次我得到一个光标并在移动到下一个比较之前关闭它。
try{
int[] ids = getIds(); // get required ids
for(i =0; i<ids.length, i++)
{
//
Cursor c = db.rawQuery("Select * from Table where id = "+ids[i]);
if(c == null || (c != null && c.getcount() == 0))
{
// new data
}else if(c.getcount()>0)
{
// existing data
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(c!=null && !c.isClosed())
{
c.close()
}
c = null;
}
我注意到,第一次我得到一个带有数据的光标,但之后我得到空白光标。
【问题讨论】:
-
您需要发布代码以获得此方面的帮助。
-
删除
catch以获取错误消息。 -
也不例外,我得到的是一个空光标。
-
我看不懂你的代码!为什么你得到相同的光标“大小”次?