我使用的是房间持久性库1.1.0。我可以使用Android的设备文件资源管理器( Device )在/data/data/<package_name>/databases/找到数据库文件。
它包含多个表,我可以使用room-DAO访问该表的内容,但在使用sqlite-browser打开时,is没有显示任何表。
可能是什么原因?是否有可能在不从房间切换回旧SQLiteOpenHelper的情况下解决这个问题?
发布于 2018-07-13 19:36:14
将AndroidStudio中的设备文件资源管理器中的所有三个文件复制到您的PC目录中,并在db浏览器中打开Db文件以供SQLite (http://sqlitebrowser.org)使用。确保所有三个文件都在同一个文件夹中。
发布于 2018-07-10 14:01:25
您可以使用wal_checkpoint杂注触发一个检查点,它将把WAL文件事务移回数据库中。
theRoomDb.query("pragma wal_checkpoint(full)", null)或
// the result
// contains 1 row with 3 columns
// busy, log, checkpointed
Cursor cursor = theRoomDb.query("pragma wal_checkpoint(full)", null)有关杂注参数值和结果的详细信息,请参阅PRAGMA声明。
如果没有启用WAL,则该实用化就什么也不做。顺便说一句,我用1.1.1房间进行了测试,默认情况下没有使用WAL模式,所以我必须启用它。
发布于 2018-12-24 11:34:59
机房数据库导出和导入解决方案
在我的一个项目中,我面临着同样的问题,我花了两天时间来解决这个问题。
溶液
不要为Room库创建多个实例。创建所有问题的多个实例。
MyApplication
class MyApplication: Application()
{
companion object {
lateinit var mInstanceDB: AppDatabase
}
override fun onCreate() {
super.onCreate()
mInstanceDB = AppDatabase.getInstance(this)
}
}AppDatabase
fun getInstance(context: Context): AppDatabase
{
if (sInstance == null) {
sInstance = Room.databaseBuilder(context.applicationContext,AppDatabase::class.java, "database").allowMainThreadQueries().build()
return sInstance!!
}
}现在,在任意数量的活动或片段中使用此实例,就像这样
{
var allcustomer = MyApplication.mInstanceDB.customerDao.getAll()
}导出和导入使用此库
implementation 'com.ajts.androidmads.sqliteimpex:library:1.0.0'https://stackoverflow.com/questions/51148012
复制相似问题