我正在開發一個Android應用程序。它有多個線程讀取和寫入Android SQLite數據庫。我收到以下錯誤:如何避免SQLiteException鎖定錯誤
SQLiteException: error code 5: database is locked
我明白了SQLite的鎖定在插入/更新整個數據庫,但這些錯誤似乎只是插入/更新,而我運行一個選擇查詢時發生。選擇查詢返回一個遊標,當我迭代它時,這個遊標被打開的時間相當長(幾秒鐘)。如果選擇查詢沒有運行,我永遠不會獲得鎖。我很驚訝,選擇可以鎖定分貝。這是可能的,還是其他的事情呢?
什麼是避免這種鎖的最好方法?
你說離開光標開一會兒。我相信我有同樣的問題,但我的遊標正在由listView維護。你有沒有設法解決這個問題? – taer 2010-06-27 14:11:53
是的,我通過將光標內容立即讀入集合中,關閉遊標然後遍歷集合來完成耗時的工作來解決這個問題。 如果您使用的是listView,您應該可以做同樣的事情並使用ArrayAdapter或編寫自己的適配器來擴展ArrayAdapter。 – TheArchedOne 2010-07-01 09:41:54
http://stackoverflow.com/questions/7657223/sqlite-exception-database-is-locked-issue/9503044#9503044 – junto 2012-02-29 16:45:35