MigrationHelper採用的是網上的源碼,地址 https://github.com/yuweiguocn/GreenDaoUpgradeHelper
該方法主要是通過創建臨時表,將舊錶的數據遷移到新表中。
使用步驟:
1、新建一個類繼承DaoMaster.DevOpenHelper,重寫onUpgrade(Database db, int oldVersion, int newVersion)方法,在該方法中使用MigrationHelper進行數據庫升級及數據遷。傳db對象,接口,最後可輸入一系列需要保存數據的表格實體類。
public class MigrationUpgradeHelper extends DaoMaster.OpenHelper {
public MigrationUpgradeHelper(Context context, String name) {
super(context, name);
}
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
@Override
public void onCreateAllTables(Database db, boolean ifNotExists) {
DaoMaster.createAllTables(db, ifNotExists);
}
@Override
public void onDropAllTables(Database db, boolean ifExists) {
DaoMaster.dropAllTables(db, ifExists);
}
}, UserManagerBeanDao.class);
}
}
然後使用MigrationUpgradeHelper替代DaoMaster.DevOpenHelper來進行創建數據庫等操作。
MigrationUpgradeHelper openHelper = new MigrationUpgradeHelper(this, "user");
Database db = openHelper.getWritableDb();
DaoMaster daoMaster = new DaoMaster(db);
第二步:
在實體類表中,調整其中的變量(表字段),一般就是新增、刪除、修改字段。
注意:新增字段或修改字段,其變量類型應使用基礎數據類型的包裝類,如使用Integer而不是int,避免升級過程中報錯。