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