Android 如何将现有SQLite应用程序迁移到Room持久性库?
现在问这个问题可能还为时过早,但是否可能以及如何将现有的SQLite数据库应用程序迁移/升级到新的Android Room持久性库?假设您的Room实体与当前的表架构匹配,您可以继续使用相同的数据库/表 Room管理在创建或升级数据库时初始化的主表,因此您需要增加数据库版本并提供虚拟迁移:Android 如何将现有SQLite应用程序迁移到Room持久性库?,android,database,sqlite,orm,android-room,Android,Database,Sqlite,Orm,Android Room,现在问这个问题可能还为时过早,但是否可能以及如何将现有的SQLite数据库应用程序迁移/升级到新的Android Room持久性库?假设您的Room实体与当前的表架构匹配,您可以继续使用相同的数据库/表 Room管理在创建或升级数据库时初始化的主表,因此您需要增加数据库版本并提供虚拟迁移: @Database(entities = SomeEntity.class, version = EXISTING_VERSION + 1) public class MyDatabase extends R
@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();
对于那些想知道是否有任何方法可以从
SQLite
迁移到Room
的人,即使您的模式不匹配,答案是YES,即使模式不匹配,您也可以从SQLite
迁移到Room
这是可能的,但a需要非常仔细的转换。由于这个过程需要很多步骤,我只留下你可以遵循的参考资料
希望对一些人有所帮助。还没有测试它,但我会将其标记为答案,因为数据库名称参数可能允许您使用任何以前的和现有的数据库。您知道测试此迁移的方法吗?我已经看过,但不确定如何测试从现有sqlite到room的迁移。@Gubbel如果我使用上述虚拟迁移,我可以将所有现有sqlite查询保留在现有sqlite数据库类中,还是需要以某种方式将其迁移?两个链接都指向同一个源。@Underfored删除了重复链接。我找不到旧链接,可能被删除了