**引言:**在版本迭代时,我们经常需要对数据库进行升级,而GreenDAO默认的DaoMaster.DevOpenHelper在进行数据升级时,会把旧表删除,然后创建新表,并没有迁移旧数据到新表中,从而造成数据丢失。
这在实际中是不可取的,因此我们需要作出调整。下面介绍数据库升级的步骤与要点。
第一步:新建一个类,继承DaoMaster.DevOpenHelper,重写onUpgrade(Database db, int oldVersion, int newVersion)方法,在该方法中使用MigrationHelper进行数据库升级以及数据迁移。它主要是通过创建一个临时表,将旧表的数据迁移到新表中,大家可以去看下源码。
· public class MyOpenHelper extends DaoMaster.OpenHelper {
· public MyOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
· super(context, name, factory);
· }
·
· @Override
· public void onUpgrade(Database db, int oldVersion, int newVersion) {
·
· //把需要管理的数据库表DAO作为最后一个参数传入到方法中
· MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
·
· @Override
· public void onCreateAllTables(Database db, boolean ifNot
GreenDao升级
最新推荐文章于 2022-05-27 14:17:26 发布
在版本升级时,GreenDao默认的升级方式会导致数据丢失。为避免这个问题,需要自定义OpenHelper并使用MigrationHelper进行数据库升级和数据迁移。本文介绍了四个步骤:1) 创建自定义OpenHelper并重写onUpgrade方法;2) 调整表实体的字段;3) 删除自动生成的构造方法和getter/setter,重新生成;4) 修改模块build.gradle中的数据库版本号。同时,文章提到了混淆配置和SQLCipher加密的注意事项。
摘要由CSDN通过智能技术生成