【发布时间】:2019-11-25 15:38:31
【问题描述】:
我已经在 Play Store 中发布了一个应用程序,它使用 onCreate 回调中的数据预填充 Room 数据库。从 JSON 文件中读取数据并将其放入数据库。一切都适用于从 JSON 文件再次将数据输入数据库(将新记录添加到表中)。
这是我的 RoomDatabase create 方法:
private fun create(context: Context): MyDatabase {
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE dogs ADD COLUMN language TEXT")
}
}
return Room.databaseBuilder(
context.applicationContext,
MyDatabase::class.java,
DB_NAME
)
.addMigrations(MIGRATION_1_2)
// prepopulate the database after onCreate was called
.addCallback(object : RoomDatabase.Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
GlobalScope.launch {
getInstance(context)?.let { DatabaseUtils.prepopulateDatabase(context, it) }
}
}
})
.build()
}
有没有一种简单的方法可以在不手动编写数百个 SQL 请求的情况下做到这一点? 或者,如果有办法删除整个数据库并使用全新数据创建一个新数据库,也许对我来说也是一种选择。
在此先谢谢大家 ;)
【问题讨论】:
标签: android database sqlite database-migration android-room