/** WARNING: Drops all table on Upgrade! Use only during development. */
public static class DevOpenHelper extends OpenHelper {
…
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
Log.i(“greenDAO”, “Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables”);
dropAllTables(db, true); // 删除-----①
onCreate(db);
}
}
- 凡是自动生成的代码文件,例如
xxxDao.java
类的,都会在每一次 build 的时候重新被生成,意味着个人的内嵌修改总是无效,因为总是覆盖你的。 - 数据库的升级方式需求更多是需要往后兼容的,旧数据不能丢失
解决方案
自定义升级策略。 思路参考
在上面的基础上做出如下步骤总结: (看不懂的看下面的符号描述
)
- 创建之前旧表中不存在的新表
- 创建中间表 & 把旧表的数据迁移到中间表
- 把旧表全部删除
- 创建所有新表
- 把中间表的数据迁移到新表 & 删除中间表
对应上面的步骤描述:
- A -> A + B