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;
}
}
}