当前位置:网站首页 > 技术博客 > 正文

greensql



在这里插入图片描述

       大家好久不见,一转眼马上八月份下旬了,最近由于工作比较忙,没时间给大家更新博文。百忙之中抽出时间,给大家来更新一篇关于GreenDao3+数据库的升级

       关于GreenDao的详细介绍以及一些逻辑性的等,可以参考我去年写的一篇文章,《Android GreenDao 3.2.2的详解以及实战(附Demo)》
在这里插入图片描述


       在版本迭代时,我们经常需要对数据库进行升级,而GreenDao默认的在进行数据升级时,会把旧表删除,然后创建新表,并没有迁移旧数据到新表中,从而造成数据丢失。

       这在实际开发项目应用中是不可取的,因此我们需要作出调整。

       当然了在此之前,自己也调研并且咨询了一下度娘,发现好多文章写的比较杂乱,最终按照实际操作之后也并没有达到预期效果,但是大部分都是对于数据库版本升级都是在方法中进行处理的。

       最终也并不是没有解决办法,,它主要是通过创建一个临时表,将旧表的数据迁移到新表中,大家可以自行去百度看源码吧。接下来,说一下我个人实际操作吧!

这里用的是于卫国大佬封装好的,
它是一个GreenDao的。
使用它可以很容易解决数据库升级问题,并且只需要一行代码。
https://github.com/yuweiguocn/GreenDaoUpgradeHelper

1、导入依赖

2、新建一个类,继承,重写方法,在该方法中使用进行数据库升级以及数据迁移。

 

db:数据库操作对象
ReCreateAllTableListener:重新创建表的监听器
xxxDao.class:对应bean的数据库操作对象

 

3、在数据库初始化的地方,使用MyOpenHelper替代DaoMaster.DevOpenHelper来进行创建数据库等操作。

 

4、修改实体对象的字段

 

5、执行编译(重点),目的让bean对象重新生成配置信息和Dao类。

6、修改app下的gradle数据库信息,build.gradle中数据库的版本号,递增加1即可,最后运行app。

 

       经过实际项目应用中,发现无论是删除表单也好,还是修改或者删除表单字段也好,都实测有效。并且,旧数据也会做保留不会丢失。

最后,这是我个人项目中的需求,大家也需要按照个人需求来实际开发。欢迎大家,留言探讨,共同学习!

项目地址:Android GreenDao数据库升级

版权声明


相关文章:

  • ip a命令详解2025-01-14 12:30:03
  • 电脑双硬盘双系统怎么切换2025-01-14 12:30:03
  • 循环队列存储结构2025-01-14 12:30:03
  • xampp汉化2025-01-14 12:30:03
  • fastjson safemode 1.2.702025-01-14 12:30:03
  • 什么是黑客攻击的本质?主要攻击手段有哪些?2025-01-14 12:30:03
  • hashcode详解2025-01-14 12:30:03
  • 膨胀操作 图像处理2025-01-14 12:30:03
  • pthread_equal2025-01-14 12:30:03
  • qt多线程例子2025-01-14 12:30:03