本文最后更新于 867 天前,其中的信息可能已经有所发展或是发生改变。
Android开发的小伙伴们应该对Room再熟悉不过了吧,虽然好用,但是初学肯定会遇到各种各样的问题,这次来简单记录一下Room数据库添加数据表的版本升级。
Room$databaseBuilder下提供了addMigrations方法以供开发者升级数据库,但是直接将数据库的version修改之后会直接提示找不到数据表的错误,这就需要我们自己手动写SQL语句来新建数据表。
当然我们可以自己使用database.execSQL直接修改,但是毕竟我比较懒嘛,所以想到一个很妙的方法,不知道有没有前辈发现过。
简单来说,只需要将数据库的version修改,在entities里加上对应的对象即可,编译启动app后会崩溃退出,这时先不用管它,让我们回到带有@Database注解的那个类中。
这时我们找到abstract DAO的代码行,可以发现左边有一个f(x),直接点进去:
在里面找到createOpenHelper函数,现在我们发现在其中的createAllTables已经有自动生成好的SQL语句,可以直接拿来用。
将它们复制到addMigration中,大功告成。