Android SQLite在应用中数据保存查询,但是拷贝的xxx.db没有数据或没有更新,.db

您所在的位置:网站首页 手机db后缀是什么文件 Android SQLite在应用中数据保存查询,但是拷贝的xxx.db没有数据或没有更新,.db

Android SQLite在应用中数据保存查询,但是拷贝的xxx.db没有数据或没有更新,.db

2024-07-01 10:04| 来源: 网络整理| 查看: 265

Android SQLite在应用中数据保存能查询,但是拷贝的xxx.db没有数据或没有更新问题,.db_wal和.db_shm文件是什么

文章目录 问题原因解决方法SQLite的.db_wal和.db_shm文件

问题

拷贝ROOM数据库data/data/com.xxx.xxx/databases/xxx.db到Windows下,使用DB browser for SQLite工具打开,发现数据没有更新。但是debug应用,使用ROOM保存数据,保存成功并且能查询到数据,但是拷贝出来的xxx.db就是没有数据。

原因

数据库没有关闭!!!能查询到数据的原因是内容在磁盘缓存里,还是可以查到的,但是没有写到xxx.db文件中。经过测试重新开机也不会自动写到xxx.db文件中,要在代码中close();

如下图关闭数据不关闭数据库,应用退出也没关闭数据库 在这里插入图片描述

如下图关闭数据后,这是拷贝出来的数据库,就有数据了 在这里插入图片描述

解决方法

在应用退出的适当时机,调用数据库的close()方法,如在MainActivity的onDestroy()中close()。当你看到.db_wal和.db_shm文件文件出现时,说明数据库正在使用或者没有关闭。

override fun onDestroy() { super.onDestroy() mySQLiteOpenHelper.close() //myRoomDb.close() } SQLite的.db_wal和.db_shm文件

这两个文件是SQLite原子操作的缓存,当更新一些记录时,先写入.db_wal和.db_shm文件。然后,在关闭数据库或缓存到一定大小时才会写到.db文件中。这是个人理解,请自行深入学习。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3