此问题仅适用于SDK 28设备(仿真器)。 使用SQLiteOpenHelper创建的我的SQLite数据库在应用程序中可以完美运行,但是当我将其导出到磁盘(通过Android Studio或通过代码)时,其许多数据都会丢失。在应用程序中对此数据库所做的更改将立即反映在应用程序中,但不会反映在导出的数据库文件中。我要导出的数据库文件位于以下位置: DDMS->文件浏览器->数据->数据->我的包名称->数据库->我的数据库文件。 在SDK <28设备上,数据库文件可以很好地导出。
答案 0 :(得分:0)
我独立解决了这个问题。
我发现数据库文件夹除了数据库本身之外还包含两个补充文件。文件夹的内容如下:
没有这些文件,数据库是不完整的。
在SDK 28之前,只有一个补充文件,它不会影响数据库的完整性:
解决方案是在SQLiteOpenHelper中对数据库的单例实例执行.setWriteAheadLoggingEnabled(false):
SELECT * FROM my_table
WHERE STR_TO_DATE(SUBSTRING_INDEX(my_table.`dates`, ',', 1), '%d-%m-%Y') >= '2018-01-01'
AND STR_TO_DATE(SUBSTRING_INDEX(my_table.`dates`, ',', - 1), '%d-%m-%Y') <= '2018-02-13'
这将恢复默认情况下在<28的SDK中使用的数据库日志记录设置。这样做为我提供了一个数据库文件,其中包含不依赖于补充文件的完整和最新数据。