greenDAO对数据库操作的升级问题
来源:互联网 发布:北京婚纱照 知乎 编辑:程序博客网 时间:2024/05/23 01:22
最近项目中用到了数据库,第三方库greenDAO对数据库操作的封装有特别好用,因此在项目中集成了greenDAO。但是当项目版本升级的时候,遇到了数据库升级的问题。经查greenDAO的源码,发现它对数据库升级的源码是将原有的数据库删除,重新建立新的数据库了。如果不想删除原有的数据,那么就涉及到数据库升级问题,数据库升级比较麻烦的就是数据的迁移问题
库文件下定义:
greendao { schemaVersion 1//指定数据库版本号,更新操作会用到; daoPackage '***'//自动生成的dao的包名,包名默认是entity所在的包; targetGenDir 'src/main/java'//生成数据库文件的目录}创建数据库对象的实体类
@Entity
重新编译一下,会自动生成数据库使用的类
当对数据库实体类的参数变更时候
public class Helper extends DaoMaster.OpenHelper{ private static DaoMaster daoMaster; private static DaoSession daoSession; public static final String DBNAME = "greendao.db"; public Helper(Context context){ super(context,DBNAME,null); } @Override public void onUpgrade(Database db, int oldVersion, int newVersion) { super.onUpgrade(db, oldVersion, newVersion); Log.i("version", oldVersion + "---先前和更新之后的版本---" + newVersion); if (oldVersion < newVersion) { Log.i("version", oldVersion + "---先前和更新之后的版本---" + newVersion); MigrationHelper.getInstance().migrate(db, UserDao.class); //更改过的实体类(新增的不用加) 更新UserDao文件 可以添加多个 XXDao.class 文件// MigrationHelper.getInstance().migrate(db, UserDao.class,XXDao.class); } } /** * 取得DaoMaster * * @param context * @return */ public static DaoMaster getDaoMaster(Context context) { if (daoMaster == null) { DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(context, DBNAME, null); daoMaster = new DaoMaster(helper.getWritableDatabase()); } return daoMaster; } /** * 取得DaoSession * * @param context * @return */ public static DaoSession getDaoSession(Context context) { if (daoSession == null) { if (daoMaster == null) { daoMaster = getDaoMaster(context); } daoSession = daoMaster.newSession(); } return daoSession; }}
完成相关操作之后;还要改数据库版本
greendao { schemaVersion 2//改版本号为2 daoPackage 'com.zhangqie.greendao.gen'; targetGenDir 'src/main/java'}
编译运行,可以去实体类和UserDao查看 增加的字段相关信息自动生成完成;
当然先前的版本1 中的数据也是存在的,只不过 新添加的字段 的值全部为空而已;
至此,数据库升级完成
阅读全文
0 0
- greenDAO对数据库操作的升级问题
- GreenDAO数据库升级问题的解决方法
- GreenDao操作数据库版本升级
- greendao数据库升级(数据库表的迁移)
- 使用GreenDao对数据库进行操作
- GreenDao数据库结构升级
- GreenDAO数据库版本升级
- GreenDAO数据库版本升级
- GreenDao数据库升级解决方案
- greendao数据库升级
- greenDao数据库升级
- Greendao 数据库升级解决方案
- GreenDao之数据库升级
- greenDao数据库升级
- GreenDao数据库升级
- GreenDao数据库升级方案
- greendao 数据库升级
- greenDao数据库升级
- 机器学习_决策树
- pandas中关于时间的处理总结
- Java String中常用方法
- Win10下Python的Opencv3的安装
- MVP 登录注册
- greenDAO对数据库操作的升级问题
- 抽象工厂
- 荷兰计算机科学家Dijkstra
- Weblogic 服务器如何支持https协议
- Java Jedis操作Redis示例(四)——Redis和Mysql的结合方案演进
- leetcode第一题,二数之和
- [NOIP模拟] Math
- bzoj1878 莫队
- 抽象工厂模式一个例子