如何将现有的 SQLite 应用程序迁移到 Room Persistence Library?
How to migrate existing SQLite application to Room Persistance Library?
现在问可能有点早,但是是否有可能以及如何将现有的 SQLite 数据库应用程序 Android 到新的 Android Room Persistance Library?
假设您的房间实体与您当前的 table 架构匹配,您可以继续使用相同的 database/tables。
Room 管理一个 master table,它在创建或升级数据库时初始化,因此您需要增加数据库版本并提供虚拟迁移:
@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
迁移到房间。
这是可能的,但需要非常小心的转换。由于这个过程需要很多步骤来完成,我将只留下您可以遵循的参考资料。
Incrementally migrate from SQLite to Room
希望对一些人有所帮助。
现在问可能有点早,但是是否有可能以及如何将现有的 SQLite 数据库应用程序 Android 到新的 Android Room Persistance Library?
假设您的房间实体与您当前的 table 架构匹配,您可以继续使用相同的 database/tables。
Room 管理一个 master table,它在创建或升级数据库时初始化,因此您需要增加数据库版本并提供虚拟迁移:
@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
迁移到房间。
这是可能的,但需要非常小心的转换。由于这个过程需要很多步骤来完成,我将只留下您可以遵循的参考资料。
Incrementally migrate from SQLite to Room
希望对一些人有所帮助。