16

问这个问题可能有点早,但是否有可能以及如何将现有的 SQLite 数据库应用程序迁移/升级到新的 Android Room Persistance Library?

4

2 回答 2

16

假设您的房间实体与您当前的表模式匹配,您可以继续使用相同的数据库/表。

Room 管理一个在创建或升级数据库时初始化的主表,因此您需要增加数据库版本并提供虚拟迁移:

@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();
于 2017-05-22T20:01:20.973 回答
1

对于那些想知道即使您的架构不匹配是否有任何方法可以迁移到房间的人,答案是SQLite肯定,即使架构不匹配,您也可以从房间迁移到房间。RoomSQLite

这是可能的,但需要非常小心的转换。由于该过程需要涵盖许多步骤,因此我将留下您可以遵循的参考。

从 SQLite 增量迁移到 Room

希望对少数人有所帮助。

于 2019-07-15T01:14:34.357 回答