Я уже опубликовал приложение в Play Store, которое предварительно заполняет базу данных Room данными в обратном вызове onCreate
. Данные считываются из файла 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-запросов вручную? Или, если есть способ, как удалить всю базу данных и создать новую с совершенно новыми данными, возможно, это тоже будет для меня вариантом.
Заранее спасибо ребята ;)