房间数据库无此表异常

时间:2018-06-19 13:15:25

标签: android sqlite android-sqlite android-room

因此,在关闭数据库之前,我要将数据库文件导出到外部存储中,并且在导出数据库之后,我想继续使用此关闭的数据库,如何在不重新启动应用程序的情况下重新打开同一数据库?如果我重新启动应用程序,则一切正常,但是如果我重新启动调用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
    }
}

0 个答案:

没有答案