Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将查询添加到设置查询室数据库,以便使用一些初始值填充数据库_Android_Sqlite_Kotlin_Android Room - Fatal编程技术网

Android 如何将查询添加到设置查询室数据库,以便使用一些初始值填充数据库

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(

我正在尝试在我的应用程序中添加房间数据库。在初始化数据库时,我需要在表中添加一些主数据。有没有像addSetUpQuery这样的方法

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)
        }
    }