2011-09-08 85 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