Android 如何将查询添加到设置查询室数据库,以便使用一些初始值填充数据库
我正在尝试在我的应用程序中添加房间数据库。在初始化数据库时,我需要在表中添加一些主数据。有没有像addSetUpQuery这样的方法Android 如何将查询添加到设置查询室数据库,以便使用一些初始值填充数据库,android,sqlite,kotlin,android-room,Android,Sqlite,Kotlin,Android Room,我正在尝试在我的应用程序中添加房间数据库。在初始化数据库时,我需要在表中添加一些主数据。有没有像addSetUpQuery这样的方法 Room.databaseBuilder(appContext, KeepiDB::class.java, DATABASE_NAME) .addMigrations(MIGRATION_2_3) .addSetUPQuery("Query here") .build(
Room.databaseBuilder(appContext, KeepiDB::class.java, DATABASE_NAME)
.addMigrations(MIGRATION_2_3)
.addSetUPQuery("Query here")
.build()
我看到你的基本方式,你能做什么 初始化房间数据库,如下所示
val instance = Room.databaseBuilder(
context.applicationContext,
WordRoomDatabase::class.java,
"Word_database"
).addCallback(WordDatabaseCallback()).build() // set my own callback here
并实现WordDatabaseCallback,如
WordDao是我的DAO,我正在尝试通过它插入/删除数据
有关更多详细信息,请参见以下链接
您可以使用Room.databaseBuilder.addCallbackmyCallBack set callback添加。进行实现RoomDatabase.Callback和OnOpenB内部的回调。。。你可以通过DaoThank@MD执行任何crud操作。你可以给我看任何示例查看我的答案了解更多详细信息吗?我相信这将删除所有记录,然后在每次运行应用程序时添加初始数据。要在创建数据库时只添加一次记录,您需要重写onCreate方法而不是onOpen方法,这就是我在初始化时需要在表中添加一些主数据的解释db@MikeT是的,你是对的,但这只是一个基本的方法。我看到删除只是为了获取知识
private class WordDatabaseCallback(
private val scope: CoroutineScope
) : RoomDatabase.Callback() {
override fun onOpen(db: SupportSQLiteDatabase) {
super.onOpen(db)
INSTANCE?.let { database ->
scope.launch(Dispatchers.IO) {
populateDatabase(database.wordDao())
}
}
}
suspend fun populateDatabase(wordDao: WordDao) {
//Clearing all the data from table
wordDao.deleteAll()
//Adding record
var word = Word("Hello")
wordDao.insert(word)
//Adding record
word = Word("World!")
wordDao.insert(word)
}
}