我试图创建我的应用程序数据库内容的备份,对于大多数设备,它工作得很好,但少数有默认启用的模式,这会导致一个问题。从我读过的所有内容来看,调用"pragma wal_checkpoint"应该将-wal文件的内容冲洗到主数据库文件中,这就是我所追求的。将内容刷新到主db文件,然后复制db文件进行备份。我在呼叫
db.rawQuery("pragma wal_checkpoint;", null);
但它似乎不起作用。什么好主意吗?
这对我来说是有效的刷新wal文件到主数据库。
String query = "pragma wal_checkpoint(full)";
Cursor cursor = db.rawQuery(query, null);
if (cursor != null && cursor.moveToFirst()) {
int a = cursor.getInt(0);
int b = cursor.getInt(1);
int c = cursor.getInt(2);
}
if (cursor != null) {
cursor.close();
}
db.close();
rawQuery()返回一个游标;直到您尝试从游标中读取数据时,查询才会实际执行。
要执行不返回游标的SQL语句,请使用execSQL()代替。