Android 房间数据库文件为空 - .db、.db-shm、.db-wal
Android Room database file is empty - .db, .db-shm, .db-wal
使用 android 中的空间作为数据库。当我试图在 sqlviewer 中查看数据时,在数据库文件中找不到表
Myapp.db 文件为空。
Data/data/packageName/databases/Myapp.db
转到文件夹 Data/data/packageName/databases/ 必须有三个文件 .db
、.db-shm
、.db-wal
,将所有三个文件复制到一个位置,然后打开您的 Myapp.db打开db文件需要这两个额外的文件
检查您的数据库后 class,
@Database(entities = arrayOf(Test::class), version = 1, exportSchema = false)
abstract class MyDatabase:RoomDatabase() {
private var INSTANCE: MyDatabase? = null
abstract fun testDao(): TestDao
}
在这里,MyDatabase 是我的数据库 class,Test 是 table 名称,TestDao 是 Dao class。
在 android 工作室 3.1.*
在工具window栏中点击“Device File explorer
”,通常你可以在屏幕的右下角找到它
打开 data/data/your-application-package/databases
中的目录
使用新架构在数据库目录中创建了 3 个文件
your-database-name
your-database-name-shm
your-database-name-wal
您必须将所有 3 个导出到同一目录
然后在任何 sqlite 浏览器中打开第一个文件(仅包含您的数据库名称)。
现在您可以看到您的所有数据......
your-database-name-shm
your-database-name-wal
打开db文件需要这两个额外的文件
如果您只打开数据库文件,那么您将不会在该文件中找到任何 table
我保存了整个文件夹,仅此而已,我可以浏览 table。
确保在退出应用程序时关闭数据库,这将确保提交所有未完成的事务:
@Override
protected void onDestroy() {
super.onDestroy();
// close the primary database to ensure all the transactions are merged
MyAppDatabase.getInstance(getApplicationContext()).close();
}
然后您可以使用 Android Studio 中的设备文件资源管理器从您的设备复制数据库(在 /data/data/<您的应用程序包名称>/databases 下查找)。
您也可以 而不是关闭数据库,但以我的拙见,此选项更简单(除非您尝试以编程方式或类似方式在应用程序中备份数据库)并关闭databases 是个好主意(即使 Android Room 文档中没有真正提到它)。
在此处阅读有关 sqlite WAL 的更多信息:https://www.sqlite.org/wal.html
使用 android 中的空间作为数据库。当我试图在 sqlviewer 中查看数据时,在数据库文件中找不到表 Myapp.db 文件为空。 Data/data/packageName/databases/Myapp.db
转到文件夹 Data/data/packageName/databases/ 必须有三个文件 .db
、.db-shm
、.db-wal
,将所有三个文件复制到一个位置,然后打开您的 Myapp.db打开db文件需要这两个额外的文件
检查您的数据库后 class,
@Database(entities = arrayOf(Test::class), version = 1, exportSchema = false)
abstract class MyDatabase:RoomDatabase() {
private var INSTANCE: MyDatabase? = null
abstract fun testDao(): TestDao
}
在这里,MyDatabase 是我的数据库 class,Test 是 table 名称,TestDao 是 Dao class。
在 android 工作室 3.1.*
在工具window栏中点击“Device File explorer
”,通常你可以在屏幕的右下角找到它
打开 data/data/your-application-package/databases
使用新架构在数据库目录中创建了 3 个文件
your-database-name
your-database-name-shm
your-database-name-wal
您必须将所有 3 个导出到同一目录
然后在任何 sqlite 浏览器中打开第一个文件(仅包含您的数据库名称)。
现在您可以看到您的所有数据......
your-database-name-shm
your-database-name-wal
打开db文件需要这两个额外的文件 如果您只打开数据库文件,那么您将不会在该文件中找到任何 table
我保存了整个文件夹,仅此而已,我可以浏览 table。
确保在退出应用程序时关闭数据库,这将确保提交所有未完成的事务:
@Override
protected void onDestroy() {
super.onDestroy();
// close the primary database to ensure all the transactions are merged
MyAppDatabase.getInstance(getApplicationContext()).close();
}
然后您可以使用 Android Studio 中的设备文件资源管理器从您的设备复制数据库(在 /data/data/<您的应用程序包名称>/databases 下查找)。
您也可以
在此处阅读有关 sqlite WAL 的更多信息:https://www.sqlite.org/wal.html