2010-08-25 25 views
4

我正在使用SQLite數據庫來存儲和檢索我的應用程序數據,以及檢查重複條目的內容。我嘗試檢索標題匹配的所有條目,例如:遊標返回-1的計數,但項目存在?

Cursor c = mDb.query(DatabaseHelper.GOALS_TABLE_NAME, 
        new String[] { Goals.GOAL_ID, Goals.TITLE }, 
        Goals.TITLE + "='" + title + "'", null, null, null, 
        null, null); 

其中title是與之比較的標題。

該查詢運行,但遊標給出的計數爲-1。沒有where子句的調用也返回-1,但我知道數據存在,因爲我可以將列表視圖綁定到它。

有什麼我不知道,我必須以某種方式填充光標嗎?

由於提前,

Venatu

+0

你說你可以綁定一個ListView到它。那麼你還會在ListView中看到一些項目嗎? – Juri 2010-08-25 20:37:02

+0

是的,我期望的所有項目都會出現。我正在設置列表視圖,如記事本教程中所示。 (試圖發佈代碼,但未格式化) – Venatu 2010-08-25 20:52:24

回答

12

當你做一個query(),該Cursor立即返回。查詢本身尚未運行。只有當你做一些需要數據加載的事情時,查詢纔會被執行。在調用getCount()之前,嘗試先執行另一種方法(例如,moveToFirst()),然後查看是否改變了事情。

+0

Thnak你,這完美地解決了我的問題! – Venatu 2010-08-26 14:53:11

+0

我明白了,這就是爲什麼我的遊標大小返回0的原因,但是在將結果放入記錄器時,它會調用getCount。這是非常簡潔的解釋謝謝! – 2015-05-05 09:00:27