Как перенести существующее приложение SQLite в библиотеку Room Persistance?

Возможно, будет немного раньше спросить, но возможно ли это, и как перенести/обновить существующее приложение базы данных SQLite в новую библиотеку Android Room Persistance?

Ответ 1

Предполагая, что ваши объекты комнаты соответствуют вашим текущим схемам таблиц, вы можете использовать одну и ту же базу данных/таблицы.

Комната управляет главной таблицей, которая инициализируется при создании или обновлении базы данных, поэтому вам нужно увеличить вашу версию базы данных и предоставить фиктивную миграцию:

@Database(entities = SomeEntity.class, version = EXISTING_VERSION + 1)
public class MyDatabase extends RoomDatabase {
    // ...
}

MyDatabase db = Room.databaseBuilder(context, MyDatabase.class, "db_name")
                    .addMigrations(new Migration(EXISTING_VERSION, EXISTING_VERSION + 1) {
                        @Override
                        public void migrate(SupportSQLiteDatabase database) {
                            // NOOP
                        }
                    }).build();

Ответ 2

Для тех, кто интересуется, существует ли какой-либо способ перехода с SQLite на Room даже если ваша схема не совпадает, ответ - ДА, вы можете перейти с SQLite на Room, даже если схема не совпадает.

Это возможно, но требует довольно осторожных преобразований. Поскольку этот процесс требует так много шагов, я просто оставлю ссылку, которой вы можете следовать.

Справочник по переходу с SQL на номер

Инкрементальный переход с SQLite на Room

Надеюсь, это будет полезно для немногих.