将表移动到新的数据库迁移室 Android

时间:2021-03-06 13:09:25

标签: android android-room

我在 Android 中使用 Room 作为我的数据库。最近我不得不为我的主数据库创建一个备用数据库,所以现在我有 2 个数据库。

abstract class FirstDatabase : RoomDatabase() 
abstract class ScondDatabase : RoomDatabase() 

我想将 FirstDataBase 中的表复制到 SecondDataBase。我知道我应该写迁移,但我不知道该怎么做。 这是我当前使用匕首进行房间迁移:

fun provideDatabaseMigration56(): Migration {
        return object : Migration(DATABASE_VERSION_5, DATABASE_VERSION_6) {
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("DROP TABLE IF EXISTS `pins`")
                
            }
        }
    }

    fun provideDatabaseMigration45(): Migration {
        return object : Migration(DATABASE_VERSION_4, DATABASE_VERSION_5) {
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("CREATE TABLE IF NOT EXISTS `pins` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `slug` TEXT NOT NULL)")
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您正在寻找的是 SQLite ATTACH DATABASE 语句。这允许您将附加数据库附加到当前连接,然后运行引用两者中的表的查询。有一些详细的文档 here 显示了语法:

ATTACH DATABASE file_name AS database_name;

然后,您可以运行引用两个数据库中的表的查询,但请确保在引用附加数据库中的表时,您将其称为

database_name.table_name

而不仅仅是table_name

相关问题