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

Pau*_*aul 8 java sqlite android

我正在尝试创建我的应用程序数据库内容的备份,对于大多数设备来说,它工作正常,但有一些设备默认启用了 wal 模式,这会导致问题。从我读过的所有内容来看,调用“pragma wal_checkpoint”应该将 -wal 文件的内容刷新到主数据库文件中,这就是我所追求的。将内容刷新到主数据库文件,然后复制数据库文件进行备份。我正在打电话

db.rawQuery("pragma wal_checkpoint;", null);
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用。有任何想法吗?

SK.*_*uad 7

It's worked for me to flush wal file to main database.

        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();
Run Code Online (Sandbox Code Playgroud)


CL.*_*CL. 3

rawQuery()返回一个游标;直到您尝试从游标读取数据时,查询才会真正执行。

要执行不返回游标的 SQL 语句,请改用execSQL()