在Android中使用Room进行数据库操作。当我尝试在SQLViewer中查看数据时,发现数据库文件中没有表格。Myapp.db文件为空。
路径为Data/data/packageName/databases/Myapp.db。
在Android中使用Room进行数据库操作。当我尝试在SQLViewer中查看数据时,发现数据库文件中没有表格。Myapp.db文件为空。
路径为Data/data/packageName/databases/Myapp.db。
前往文件夹Data/data/packageName/databases/。这里应该有三个文件:.db
,.db-shm
和.db-wal
。将这三个文件复制到一个位置,然后打开Myapp.db文件。这两个额外的文件是打开db文件所必需的。
在Android Studio 3.1.*中:
在工具窗口栏中,点击"Device File Explorer
",通常可以在屏幕右下角找到它。
打开目录:data/data/your-application-package/databases
在新的架构下,会在数据库目录中创建3个文件。
your-database-name
your-database-name-shm
your-database-name-wal
你需要将所有三个文件都导出到同一个目录中,
然后在任何sqlite浏览器中打开第一个文件(只有你的数据库名称),
现在你就可以看到所有的数据......
your-database-name-shm
your-database-name-wal
打开数据库文件需要这两个附加文件,如果你只打开数据库文件,那么在该文件中将找不到任何表。
your-database-name.db
,your-database-name.db-shm
和your-database-name.db-wal
。 - Mr-IDE确保在退出应用程序时关闭数据库,这将确保所有未完成的事务都得到提交:
@Override
protected void onDestroy() {
super.onDestroy();
// close the primary database to ensure all the transactions are merged
MyAppDatabase.getInstance(getApplicationContext()).close();
}
请检查您的数据库类。
@Database(entities = arrayOf(Test::class), version = 1, exportSchema = false)
abstract class MyDatabase:RoomDatabase() {
private var INSTANCE: MyDatabase? = null
abstract fun testDao(): TestDao
}
这里,MyDatabase是我的数据库类,Test是表名,TestDao是Dao类。