首页 > 解决方案 > (RoomDatabase) 从资产更新数据库值而不丢失用户数据

问题描述

在我的 android (Android Studio) 应用程序中,数据是从 RoomDatabase 的 assets 文件夹中的数据库预加载的。

   val instance = Room.databaseBuilder(context.applicationContext, NormRoomDatabase::class.java, "legislacion_database")
                .createFromAsset("legislacion.db")                    
                .addCallback(NormDatabaseCallback(scope))
                .build()

要更新应用程序数据库的数据,我必须更新资产文件夹的数据库数据并将其版本更新为 2。为了加载新数据,我还将 Room 中的数据库版本更新为 2,我添加以下行:

.fallbackToDestructiveMigration()

通过这样做,应用程序中的 db 将使用资产 db 的数据进行更新。到目前为止一切都很好。

问题是这样做还会删除用户在 apk 中添加的数据,例如评论和收藏夹。

如何在不丢失用户添加的数据的情况下使用新资产数据更新我的应用程序?这可能吗?我不想更新数据库方案,只想更新值。

标签: androiddatabaseandroid-studioandroid-sqliteandroid-room

解决方案


推荐阅读