数据库在尝试在其他课程中打开时偶尔会被锁定

时间:2015-08-07 16:57:12

标签: android sqlite

问题:db不会偶尔在稀有设备上打开。

我有一个后台service.class和一些UI类。两者都打开db:

 String ppp1=getDatabasePath("myproject.db").getAbsolutePath();
 db = SQLiteDatabase.openDatabase(ppp1, null, SQLiteDatabase.OPEN_READWRITE);

该服务在循环(线程)中进行查询和更新,例如:

    Cursor c1;
    String q1 = "select uid from logs where type!=2";
    c1 = db.rawQuery(q1, null);
    allLogsCount += c1.getCount();
    c1.close();

问题:有时onCreate()的UI类无法打开db,错误也不同:

android.database.sqlite.SQLiteException: Failed to change locale for db /data/data/com.myproject.android/databases/myproject.db to en_US .

java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/com.myproject.android/databases/myproject.db

或只是

android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)

服务不是在单独的过程中运行。没有未关闭的游标,我查了一下。它只发生在一台设备上 - 松下ToughPad FZ-X1(SDK 17)

我做错了什么?

0 个答案:

没有答案