首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将现有的房间数据库从:app迁移到:数据库模块

将现有的房间数据库从:app迁移到:数据库模块
EN

Stack Overflow用户
提问于 2022-05-28 00:33:19
回答 1查看 71关注 0票数 0

在一个应用程序上工作,该应用程序遭受了成为一体机的失败,从而削弱了代码维护。

目前的重点是改进应用程序代码的多个方面,其中之一是使应用程序模块化(功能和层的组合)。

这个过程已经完成,但是当用户安装这个新版本时,需要迁移以前版本中的任何现有数据库数据,而我无法找到这方面的指南/文档。

如何将现有的Room数据库数据从一个模块迁移到另一个模块,以便当用户安装这个新版本而不是旧版本时,他们不会丢失现有的信息?

EN

回答 1

Stack Overflow用户

发布于 2022-05-28 03:49:42

默认情况下,数据库存储在一个地方(data/data/<the_package_name>/databases/<the_database_filename>)中,因此模块是不相关的。

所以这只是一个迁移的问题。总之,我建议

在Android的Android (已生成的)中查找与@Database类相同的类,但以classes.

  • Compile _Impl作为后缀。在该类中将有一个名为createAllTables的方法。它包含创建表和其他数据库组件(如索引、触发器和视图)的所有SQL。

  • 创建核心迁移代码。对于每个表,

  • 使用修改后的表名来创建新表。每个表的

  • if查看和读取somehow.

,那么必须在子表throughout

  • if之前创建父表,您有新的列并有NULL约束,那么您必须满足这个somehow.

在数据都被复制后,您可以重命名原始表,用户ALTER TABLE RENAME TO another_name

  • Rename,新表,以便它们有正确的名称。

  • 删除重命名的(another_name)表。parents.

之前必须删除

  1. 注意到的孩子

  • 您可以移动10来替换8(但是重命名然后删除)

更安全

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72412137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档