SQLite语句中止,数据库在Android应用程序中锁定

时间:2016-02-05 08:35:21

标签: android sqlite ormlite

在我的应用中,我使用ORMLite在我的SQLite数据库中插入数据。在某些设备上,插入数据时出现以下错误:

02-05 09:29:56.864  22365-22441/com.app E/SQLiteLog﹕ (5) statement aborts at 2: [PRAGMA journal_mode=PERSIST]
02-05 09:29:56.864  22365-22441/com.app W/SQLiteConnection﹕ Could not change the database journal mode of '/data/data/com.app/databases/app.db' from 'wal' to 'PERSIST' because the database is locked.  This usually means that there are other open connections to the database which prevents the database from enabling or disabling write-ahead logging mode.  Proceeding without changing the journal mode.

我不知道如何为ORMLite解决这个问题。有没有人解决我的问题?只访问一个SQLOpenHelper不能解决我的问题,因为我使用ORMLite并且不直接从我的代码中使用SQLOpenHelper。

3 个答案:

答案 0 :(得分:0)

您是否在此声明之前使用查询似乎该威胁的执行仍在执行?

也许你需要在开始其他查询之前等待结果? 不确定是否就是想与你一起思考。

答案 1 :(得分:0)

正如错误所说,在进行中。也许某种设备的某种操作比另一种更慢。请仔细检查您的代码

答案 2 :(得分:0)

我想我得到了一个解决方案。我从每个DatabaseManagers执行了以下代码:

SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("PRAGMA journal_mode = WAL;", null);
cursor.close();

我得到的声明中止错误很少,但我仍然得到一些错误。我应该在每次查询后运行该代码,还是这不是一个好的解决方案?