无法从Android模拟器获取已填充的sqlite数据库

问题描述

第一次使用react-native-sqlite-storage,我能够在Android模拟器中创建一个sqlite db文件,在其中创建了一个表并成功插入了一行。在单击按钮之后,我还通过选择来验证是否已插入该行。

然后,我使用Android Studio的“设备文件浏览器”在data \ data \ databases文件夹中找到test.db文件,并使用“另存为”将其复制到PC的文件夹中。现在,当我在浏览器实用程序中打开test.db文件时,它是空的!里面没有桌子。

怀疑是“刷新”问题,我还在应用程序中尝试了db.close()。但是我仍然无法从Android仿真器中获得填充的数据库副本。我在做什么错了?

更新:我注意到,在android模拟器上,数据库文件中还有2个文件-一个shm文件一个wal文件。读取其他一些线程,似乎它们正在保留日志,因此似乎尚未提交数据。这些线程提到关闭游标。但是在存储库文档中没有提及。除了调用不会真正关闭游标并提交数据的close()之外,如何确保游标从应用程序中关闭

解决方法

最后,对于我的简单单表要求,我最终在db对象上调用了executeSql,而不是通过事务来完成。这样就解决了问题,并且总的来说,它始终是一个文件。不知何故,当您使用事务时,即使关闭数据库,其他文件也会徘徊。