Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将现有SQLite应用程序迁移到Room持久性库?_Android_Database_Sqlite_Orm_Android Room - Fatal编程技术网

Android 如何将现有SQLite应用程序迁移到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

现在问这个问题可能还为时过早,但是否可能以及如何将现有的SQLite数据库应用程序迁移/升级到新的Android Room持久性库?

假设您的Room实体与当前的表架构匹配,您可以继续使用相同的数据库/表

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();

对于那些想知道是否有任何方法可以从
SQLite
迁移到
Room
的人,即使您的模式不匹配,答案是YES,即使模式不匹配,您也可以从
SQLite
迁移到Room

这是可能的,但a需要非常仔细的转换。由于这个过程需要很多步骤,我只留下你可以遵循的参考资料


希望对一些人有所帮助。

还没有测试它,但我会将其标记为答案,因为数据库名称参数可能允许您使用任何以前的和现有的数据库。您知道测试此迁移的方法吗?我已经看过,但不确定如何测试从现有sqlite到room的迁移。@Gubbel如果我使用上述虚拟迁移,我可以将所有现有sqlite查询保留在现有sqlite数据库类中,还是需要以某种方式将其迁移?两个链接都指向同一个源。@Underfored删除了重复链接。我找不到旧链接,可能被删除了