Android Room Library не удается скопировать базу данных из актива - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу скопировать базу данных SQLite из ресурса, но она не копирует, не выдает никакого исключения также

@Database(entities = [UserDetails::class, CircleMaster::class], version = 1, exportSchema = false

abstract class AppDatabase : RoomDatabase() {abstract fun getLoginDao(): LoginDao

abstract fun getRegisterDao(): RegisterDao


companion object {
    @Volatile
    private var instance: AppDatabase? = null
    private val Lock = Any()
    operator fun invoke(context: Context) = instance ?: synchronized(Lock) {
        instance ?: buildDatabase(context).also {
            instance = it
        }
    }

    private fun buildDatabase(context: Context) = Room.databaseBuilder(
        context.applicationContext,
        AppDatabase::class.java,
        "Asset.db"
    ).createFromAsset("database/Asset.db").allowMainThreadQueries().build()
}}

1 Ответ

0 голосов
/ 05 февраля 2020

На самом деле я получил ответ по этой ссылке

Комната: База данных не создана

when I tried to insert data that time database is copied from asset and data is inserted Некоторые люди столкнутся с исключением миграции, я решил это, удалив комнату главная таблица из базы данных активов.

По умолчанию, Room использует SQLiteOpenHelper , так же, как вы можете использовать его напрямую.

SQLiteOpenHelper не создает базу данных при создании экземпляра SQLiteOpenHelper. Это будет сделано после того, как вы вызовете getReadableDatabase () или getWriteableDatabase () .

С точки зрения комнаты, то есть до тех пор, пока вы не выполните какую-то конкретную операцию, например, вызов метод @Dao, который попадает в базу данных, ваша база данных не будет создана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...