有没有一种方法可以清除Android中SQLite数据库文件中的更改?

时间:2019-10-20 16:31:51

标签: java android android-sqlite

我创建了一个非常大的应用程序,该应用程序使用了很多SQLite读/写功能。由于无法通过电话轻松查看数据库,因此我在应用程序中具有备份功能,该功能可将db文件上传到服务器(用于开发本地计算机)。

首先,我在服务器和电话上都具有初始数据库状态。然后,我在电话数据库中进行了一些更改(在其中添加了一些内容)。当我列出数据时,我可以看到列出的新内容。

然后,我要备份数据库-运行备份之前,我已经记录了所有内容-提取db文件的位置(它是/ data / user / 0 / APPLICATION_PACKAGE / databases / DATABASE_FILENAME)。另外,我已经删除了服务器上的所有文件。备份完成后,我已经在服务器上检查了新的db文件-文件大小(以字节为单位)匹配,但是文件中没有任何更改???

我说好,也许,不知何故,它没有被冲洗。我已经关闭了该应用程序,再次运行它,列出数据以查看是否存在(确实存在)更改,再次运行备份,以及在服务器上检查新的数据库文件时-不再更改。

这怎么可能?有没有办法将更改刷新到db文件中,以便我可以定期备份它?

1 个答案:

答案 0 :(得分:1)

启用了最可能的wal(预写日志记录)模式。要禁用它,您需要执行以下操作:

public class MyDbHelper extends SQLiteOpenHelper {

    //...

    @Override
    public void onOpen(SQLiteDatabase db) {
        db.disableWriteAheadLogging();
        super.onOpen(db);
    }

    //...
}

https://www.sqlite.org/wal.html

相关问题