2010-06-19 31 views
2

我一直在使用SQLite數據庫,這種情況下,我有一個列表顯示錶「table1」的所有「名稱」字段數據。現在我有一個按鈕來在「table1」中插入數據。該列表使用一個簡單的遊標適配器進行填充,該適配器傳遞一個用數據填充的遊標「cursor1」。 「cursor1」是使用SQLite查詢 - 「SELECT * FROM table1」準備的。現在我插入數據的時候,我也需要更新列表。在SQLite中重新查詢或重新啓動查詢之間進行選擇

我的問題是 -

  1. 將適配器感自動數據庫變化(我想不會)?
  2. 使用cursor1.requery()是正確的或我應該使用cursor1 = db.query("table1", null, null, null, null, null, null);

這將是有益的,如果你可以扔掉一些輕上1更好,其中的情況。考慮到我上面解釋的情況,requery()命令沒有給出有效的結果,而後面的1可以正常工作。仍然不知道問題可能是什麼。

回答

1

將適配器感應數據庫 自動更改(我猜不是)?

不,Adapter不會自動檢測到數據庫更改。

使用cursor1.requery()是正確的或 我應該使用光標1 = db.query( 「表1」,NULL,NULL,NULL, NULL,NULL,NULL);

使用requery()Here is a sample project從我的一本書展示了這項技術。

+0

遠遠超過馬克!但我使用了一個代碼,我在「table1」中插入了一些值,然後調用了重新查詢函數,這沒有鍛鍊。該表最初是空的,後來我插入了值並且重新查詢沒有返回任何結果。但是當我使用 cursor1 = db.query(「table1」,null,null,null,null,null,null); ,它給我的價值...我應該從這個瞭解我? 請在這裏拋出一些... – JaVadid 2010-06-21 04:24:09

+0

似乎重新使用的方法已被廢棄:http://developer.android.com/reference/android/database/Cursor.html – tjb 2012-09-03 11:59:58

+1

@tjb:是的,這個答案是從兩年前。可以在'AsyncTask'中運行一個新的查詢並交換新的'Cursor',或者使用'Loader'框架。 – CommonsWare 2012-09-03 12:09:31