GreenDao数据库之——数据库的升级

GreenDao数据库升级涉及对数据库表结构的增删改。通过创建临时表,迁移原表数据,删除旧表,创建新表,再将临时表数据复制到新表,最后删除临时表来完成升级。在更新过程中,需要自定义 DaoMaster.DevOpenHelper 类,并在工具类中调用相应方法进行操作。记得修改build.gradle中的数据库版本号以触发更新。
摘要由CSDN通过智能技术生成

GreenDao数据库升级:

其实就是对数据库的本身进行增删改,对数据库的表结构进行增删改的变化

思路

创建临时表TMP_,将原先表数据迁移过去
删除所有原表
创建新表
将TMP_表数据复制到新表,最后将TMP_表删除

先正常创建数据库,在对它进行更新操作
创建工具类:
其中:
generateTempTables(db, daoClasses);//生成临时列表
DaoMaster.dropAllTables(db, true);//返回false,会删除旧表
DaoMaster.createAllTables(db, false);//创建一个新的表
restoreData(db, daoClasses);//存储新的数据库表 以及数据

  private static final String CONVERSION_CLASS_NOT_FOUND_EXCEPTION = "MIGRATION HELPER - CLASS DOESN'T MATCH WITH THE CURRENT PARAMETERS";
private static MigrationHelper instance;   
 public static MigrationHelper getInstance() {
    if (instance == null) {
        instance = new MigrationHelper();
    }
    return instance;
}

    generateTempTables(db, daoClasses);//生成临时列表
    DaoMaster.dropAllTables(db, true);//返回false,会删除旧表
    DaoMaster.createAllTables(db, false);//创建一个新的表
    restoreData(db, daoClasses);//存储新的数据库表 以及数据
}

/**
 * 生成临时列表
 *
 * @param db
 * @param daoClasses
 */
private void generateTempTables(Database db, Class<? extends AbstractDao<?, ?>>... daoClasses) {
    for (int i = 0; i < daoClasses.length; i++) {
        DaoConfig daoConfig = new DaoConfig(db, daoClasses[i]);

        St
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值