首页 > 解决方案 > 重命名和删除房间数据库

问题描述

我想知道如何重命名或删除通过以下代码实例化的房间数据库:

AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build();

我应该期待一个database-name.db文件getApplicationContext().getFilesDir(),然后我可以重命名或删除它吗?这种方法安全吗?

我目前的解决方法是只使用一个具有多个表的数据库,模拟多个数据库。我不确定这种方法是否可以很好地扩展。

我在文档中找不到这个问题的任何答案。我不是在问如何重命名或删除列或行。

标签: androiddatabaseandroid-room

解决方案


要重命名房间数据库,您可以在获取数据库实例时执行以下操作:

//Kotlin
fun getDatabase(context: Context) : YourRoomDbClass {
   return INSTANCE ?: synchronized(this){
       val dbFile = context.applicationContext.getDatabasePath("your_old_db_name.db")
       if(dbFile.exists()) dbFile.renameTo(File(dbFile.path + "your_new_db_name.db"))
       val instance = Room.databaseBuilder(context.applicationContext, YourRoomDbClass::class.java, "your_new_db_name.db")
                          .build()
       INSTANCE = instance
       instance
   }
}

推荐阅读