android– 房间数据库迁移

android– 房间数据库迁移,第1张

概述如果我有db版本10,我将有多少方法可以进行房间迁移?我查看了以下示例GooglePersistenceMigrationSample我发现了基于数据库版本4的可能场景的Migrationvarargs.publicstaticUsersDatabasegetInstance(Contextcontext){synchronized(sLock){if(INSTANC

如果我有db版本10,我将有多少方法可以进行房间迁移?

我查看了以下示例Google Persistence Migration Sample

我发现了基于数据库版本4的可能场景的Migration varargs.

public static UsersDatabase getInstance(Context context) {    synchronized (sLock) {        if (INSTANCE == null) {            INSTANCE = Room.databaseBuilder(context.getApplicationContext(),                    UsersDatabase.class, "Sample.db")                     .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_1_4)                    .build();         }         return INSTANCE;    } } 

我的问题是,假设我正在使用db v1中的Room,到我的应用程序达到db v10时,我将需要编写多少种迁移方法?

在sqlite中,我们在onUpgrade中获得已安装app的当前db版本,我们只是通过switch case而没有break语句,因此它满足所有db升级.

但是,我不确定,但是afaik,我们无法在室内获得已安装app的当前db版本,我们编写了所有可能的迁移方法.

但是如果我有db v10的话,感觉很不方便,不适合写45种方法!

有没有更好的解决方案?

解决方法:

Suppose I am using Room from the db v1 and by time my app reaches to db v10, how many migration methods will I have to write?

9.

一种方法是:1→2,2-> 3,3-> 4,4-> 5,5-> 6,6-> 7,7-> 8-> 8-. 9和9-> 10.

另一种方法是:1-> 10,2-> 10,3-> 10,……,9-> 10.

我的猜测是第一种方法更受欢迎,因为它更容易开发.对于每个新的数据库版本,您只需创建一个附加对象.

In sqlite, we get current db version of installed app in onUpgrade and we just fall through switch case without break statements so that it satisfIEs all db upgrades.

这将与您在Room中所做的相同数量的代码行,给予或接受.每个case语句都会转换为Migration对象,处理增量升级(例如,3> 4).

But it feels so inconvenIEnt, inappropriate to write total 45 methods if I have db v10!

房间知道如何根据需要“拼接”单个迁移以达到目标版本.因此,在我概述的第一种方法中,如果应用需要从3迁移到10,则Room可以使用3-> 4,4> 5,5-> 6,…,9-> ; 10到达那里.

总结

以上是内存溢出为你收集整理的android – 房间数据库迁移全部内容,希望文章能够帮你解决android – 房间数据库迁移所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1108973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存