Android sqlite刷新WAL文件内容到主数据库文件



我试图创建我的应用程序数据库内容的备份,对于大多数设备,它工作得很好,但少数有默认启用的模式,这会导致一个问题。从我读过的所有内容来看,调用"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()代替。

最新更新