Как я не могу создать базу данных, если база данных существует с Room в Kotlin? - PullRequest
1 голос
/ 23 апреля 2020

Обычно я использую код A для создания базы данных Tasks.db с Room, когда приложение запускается впервые, я надеюсь, что Room не создаст базу данных Tasks.db снова при повторном запуске приложения, как я могу делать?

код A

val result = Room.databaseBuilder(
            context.applicationContext,
            ToDoDatabase::class.java, "Tasks.db"
        ).build()

Ответы [ 2 ]

2 голосов
/ 23 апреля 2020

Это безопасно использовать как есть. Вы получите только новый экземпляр ToDoDatabase, к которому можно получить доступ к файлу базы данных, но файл на диске не будет удален и воссоздан, если он уже существует.

1 голос
/ 23 апреля 2020

Вы также можете использовать метод onCreate () для RoomDatabase.Callback, который вызывается только при первом создании базы данных:

val result = Room.databaseBuilder(context.applicationContext, 
    ToDoDatabase::class.java, "Tasks.db").addCallback(dbCallback).build()
...
var dbCallback: RoomDatabase.Callback = object : RoomDatabase.Callback() {
    override fun onCreate(db: SupportSQLiteDatabase) {
        Executors.newSingleThreadScheduledExecutor().execute {
            Log.i(TAG, "create database")
            result!!.getDao().insertAll(...) // add default data 
            ...
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...