GreenDao数据库升级不清除数据

GreenDao数据库升级不清除数据:

需要的引入:

implementation 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.4.0'

数据库初始化升级一定要在使用数据库之前进行,避免字段修改造成 查询数据库出错,引起程序崩溃

public static final int CURRENT_DATABASE_CODE = 15;//数据库版本

数据库的升级 :

//数据库
        MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "databaseName", null);
        DaoSession mDaoSession= new DaoMaster(helper.getWritableDb()).newSession();

//获取旧版本
        int oldDataBaseCode = SPUtils.init().getInt("old_database_version", CURRENT_DATABASE_CODE);
// 数据库升级
        helper.onUpgrade(helper.getWritableDb(), oldDataBaseCode, CURRENT_DATABASE_CODE);
        SPUtils.init().putInt("old_database_version", CURRENT_DATABASE_CODE);

数据库升级工具:

public class MySQLiteOpenHelper extends DaoMaster.OpenHelper {
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
        super(context, name, factory);
    }

    @Override
    public void onUpgrade(Database db, int oldVersion, int newVersion) {
        switch (oldVersion) {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
                MigrationHelper.migrate(db, Bean1Dao.class);// 6版本后对Bean1Dao 数据进行升级
            case 7:
            case 8:
            case 9:
            case 10:
                MigrationHelper.migrate(db, BeanNewDao.class);// 10版本后对BeanNewDao数据进行升级
            case 11:
                MigrationHelper.migrate(db, Bean3Dao.class);// 11版本后对Bean3Dao数据进行升级
            case 12:
                MigrationHelper.migrate(db, Bean4Dao.class);
            case 13:
                MigrationHelper.migrate(db, BeanDao.class);
                MigrationHelper.migrate(db, BeanDao.class);
            case 14:
                MigrationHelper.migrate(db, BeanDao.class);
                MigrationHelper.migrate(db, BeanDao.class);
            default:
                break;
        }
    }
}

最后的重点:  schemaVersion 的版本一定要+1,不然会升级失败

//greendao配置
    greendao {
        //数据库版本号,升级时修改
        schemaVersion 7
        //生成的DAO,DaoMaster和DaoSession的包路径。默认与表实体所在的包路径相同
        //daoPackage 'com.dev.base.model.db'
        //生成源文件的路径。默认源文件目录是在build目录中的(build/generated/source/greendao)
        //targetGenDir 'src/main/java'
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值