我在我的android應用程序中使用sqlite來存儲數據。 每當我啓動應用程序,我從服務器獲取一些數據並將其存儲在客戶端。現有數據更新和新數據插入到數據庫中。SQLite返回一個空的遊標,即使數據存在
但是在許多情況下,我通過查詢 "select * from Table where itemId = x"
從DB訪問現有項目時從DB獲得空白光標。就像我在更新它之前從設備/模擬器中提取數據庫一樣,我可以看到數據存在於數據庫中。
只有當我從服務器獲取大量數據並與現有數據進行比較時,纔會出現此問題。 比較是在一個循環中完成的,每次我得到一個遊標並關閉它,然後再進行下一個比較。
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;
}
我注意到,第一次我得到一個遊標的數據,但之後,我得到空白光標。
您需要額外郵費優惠後,才能獲得此頁面的幫助。 – 2013-05-13 06:13:34
刪除'catch'以獲取錯誤消息。 – 2013-05-13 12:01:58
沒有例外,我正在創建一個空的遊標。 – Atmaram 2013-05-13 12:52:36