打造通用 Room 数据库迁移工具
在使用 Android Architecture Components 时对于其中的数据库 Room 的升级想到了一个较为通用的迁移方案,使用了一段时间,在此分享一下。 转载请注明出处: https://blog.csdn.net/y1551812297/article/details/86749963 1. 准备 数据库需要升级,通常是因为其中的表或表中的字段、约束等发生了变化,比如增减表、增减字段、重命名等等。通常我们提取新旧数据库的差异,将差异应用到旧数据库中,就完成了升级。如果要做一个通用易用的迁移方案,那么第一步,我们需要能够较为简单的获取这个差异。我们很自然的想到,获取新旧数据库中的表结构,然后做比对就可以了,那么在 Room 中如何获取这个表结构?直接查询数据库可以吗?显然是不行的,旧数据库的表结构可以查到,但是新数据库此时还不存在。那提供接口,在使用时通过接口返回差异信息可以吗?这样的确可以,但是在使用时会非常麻烦,和直接使用 Migration 差别不大,就毫无意义了。 那么有没有一种简单好用的方案?当然有。 我们查看 Room 官方文档中 Migrating Room databases 这一章,其中 Export schemas 这一节中提到了: Upon compilation, Room exports your database’s schema