android - 房间数据库无此类表异常
问题描述
所以我在关闭数据库之前将数据库文件导出到外部存储,在导出数据库后我想继续使用这个关闭的数据库如何在不重新启动应用程序的情况下重新打开同一个数据库?如果我重新启动应用程序一切正常,但如果我只是重新启动MainActivity
调用getInstance()
方法并尝试从数据库应用程序崩溃中删除某些内容并产生此异常:
android.database.sqlite.SQLiteException: no such table: room_table_modification_log (code 1): , while compiling: DELETE FROM Note WHERE entryid = ?
destroyInstance()
我使用方法关闭数据库:
companion object {
private var INSTANCE: MyDatabase? = null
var lock = Any()
fun getInstance(context: Context): MyDatabase{
synchronized(lock){
if (INSTANCE == null){
INSTANCE = Room.databaseBuilder(context.applicationContext, MyDatabase::class.java,"MyDB.db").build()
}
return INSTANCE!!
}
}
fun destroyInstance() {
if (INSTANCE?.isOpen == true){
INSTANCE?.close()
}
INSTANCE = null
}
}
解决方案
推荐阅读
- .net - Protobuf-net 渐变刷
- java - 如果Java是隐式抽象的,为什么Java允许您从部分实现接口的类创建对象?
- java - 使用 Java 内联传递 Google 服务帐户详细信息
- javascript - jQuery CSS 在 Ajax 加载后未触发 - 无法使用点击事件
- r - 为 lapply 创建的 ggplots 添加标题
- excel - 在 Excel 中创建序列列
- android - Yandex MapKit 3.0。获取屏幕中心和缩放,在地图上获取位置
- java - 使用基础抽象类来组合两个相似的类
- android - 在android studio中根据时间更改背景
- python - 无法解决 Pylint 'too-many-instance-attributes'