2011-09-08 63 views
0

你能幫我理解爲什麼我'SQLiteException:數據庫被鎖定'異常嗎?在我的內容提供商,我在提供構造函數中調用數據庫被鎖定異常

mDb = SQLiteDatabase.openDatabase(path, null, 0); 

09-07 19:44:43.912 6830 6830 E AndroidRuntime: FATAL EXCEPTION: main 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: android.database.sqlite.SQLiteException: database is locked 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1990) 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:905) 
09-07 19:44:43.912 6830 6830 E AndroidRuntime: at com.mycompany.myapplication.provider.MyContentProvider.query(MyContentProvider.java:356) 

回答

2

您試圖一次打開多個數據庫;你不能這樣做。

我會建議您的數據庫處理程序類應該是一個單例,以防止數據庫打開多次的可能性。

因爲您在Android上,所以更好的解決方案是擴展SQLiteOpenHelper類。它會自動確保數據庫僅打開一次,並具有用於初始創建和數據庫更新的有用功能。

0

數據庫被鎖定異常 會來,如果其他數據庫處理程序正在數據庫。所以請確保你沒有從另一個處理程序查看數據庫。

+0

我在我的ContentProvider中打開數據庫。我只有1個ContentProvider打開該數據庫。 – michael