2010-11-18 147 views
0

我正在使用SQLiteOpenHelper類來創建,打開數據庫。爲我的應用程序,我正在創建可寫對象SQLiteDatabase,我用它來讀取和寫入數據到數據庫。該對象對於主類是靜態的,並在所有應用程序中用於讀入寫入數據庫。我的應用程序在模擬器上正常工作。但在一些讀取寫入查詢觸發後在設備上。爲什麼會發生,請任何人有解決方案幫助我。android sqlite應用程序在設備上被強制關閉

回答

0

不建議將幫助器作爲靜態實例。相反,您應該在每次需要訪問數據庫時立即安裝它。可能發生的情況是,您的數據庫連接正在被Android關閉(因爲它需要內存,因爲打開的連接太多......),並且當您執行查詢時,您不檢查連接是否仍處於打開狀態。

你可以閱讀this tutorial以瞭解如何正確地完成它。

基本上是一個活動裏面,這個想法:

private void reloadData() { 
    MyDBHelper db = new MyDBHelper(this.getApplicationContext()); 
    db.open(); 
    Cursor c = db.query(...); 
    db.close(); 

    // Update your data using the cursor 
} 
0

我幾個星期前,有同樣的問題,我發現這個page,這到底是什麼是錯的。 SQLite在Android中是bug,並且是以錯誤的方式實現的,所以你不能同時讀取和寫入數據庫/表的線程。
setLockingEnabled()只是不按照它應該的方式工作。

我所做的是運行所有讀取和寫入db「Synchronized」的方法,這意味着無論您有多少個線程,您都不會在讀取或寫入數據時遇到問題。

Registers Tobias