2 markdowneide markdowneide 于 2013.03.20 11:08 提问

SQLiteException: database is locked 异常

在我的content provider 中为什么会出现'SQLiteException: database is locked' 异常?我是在 Provider constructor 中调用的。

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

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

2个回答

ssummeraw
ssummeraw   2013.03.27 17:02
已采纳

每次你是想打开好几回数据库,但是这是不可以的。
数据库 handler 类就是用来阻止数据库可以多次打开。

还有更好的解决方法是当你在 android 中继承 SQLiteOpenHelper 类,它会自动确保数据库中能被打开一次。

CSDN_Ask
CSDN_Ask   2013.03.27 17:25

如果另一个数据库 handler 也寻找数据库,数据库被锁定异常就会发生。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!