DButils数据库升级不丢失数据
如果版本升级,表中新增了某个字段,如何在不删除表的情况下顺利过渡,如果不做处理,数据库就会报错,没有新添加的列。修改数据库的创建方式,实现升级接口。
1 db = DbUtils.create(context, "myXutils.sqlite", 2 DBVERSION, new DbUpgradeListener() { 3 4 @Override 5 public void onUpgrade(DbUtils db, int oldVersion, 6 int newVersion) { 7 if (newVersion > oldVersion) { 8 updateDb(db, "mytable"); 9 } 10 } 11 });
1 protected void updateDb(DbUtils db, String tableName) { 2 try { 3 // 把要使用的类加载到内存中,并且把有关这个类的所有信息都存放到对象c中 4 Class<EntityBase> c = (Class<EntityBase>) Class 5 .forName("com.myxutils.entity" + tableName); 6 if (db.tableIsExist(c)) { 7 List<String> dbList = new ArrayList<String>(); 8 String sql = "select * from" + tableName; 9 Cursor cursor = db.execQuery(sql); 10 int count = cursor.getColumnCount(); 11 for (int i = 0; i < count; i++) { 12 dbList.add(cursor.getColumnName(i)); 13 } 14 cursor.close(); 15 // 把属性的信息提取出来,并且存放到field类的对象中,因为每个field的对象只能存放一个属性的信息所以要用数组去接收 16 Field f[] = c.getDeclaredFields(); 17 for (int i = 0; i < f.length; i++) { 18 String fildName = f[i].getName(); 19 if (fildName.equals("serialVersionUID")) { 20 continue; 21 } 22 String fildType = f[i].getType().toString(); 23 if (!dbList.contains(fildName)) { 24 if (fildType.equals("class.Java.lang.String")) { 25 db.execNonQuery("alter table " + tableName + "add" 26 + fildName + "TEXT"); 27 } else if (fildType.equals("int") 28 || fildType.equals("long") 29 || fildType.equals("boolean")) { 30 db.execNonQuery("alter table " + tableName + "add" 31 + fildName + "INTEGER"); 32 } 33 } 34 } 35 } 36 } catch (ClassNotFoundException e) { 37 e.printStackTrace(); 38 } catch (DbException e) { 39 e.printStackTrace(); 40 } 41 42 }
转载于:https://www.cnblogs.com/tutuskys/p/5089290.html
DButils数据库升级不丢失数据相关推荐
- 数据错误循环冗余检查是什么意思_数据库为什么会丢失数据
数据库管理系统在今天已经是软件的重要组成部分,开源的 MySQL.PostgreSQL 以及商业化的 Oracle 等数据库已经随处可见,几乎所有的服务都需要依赖数据库管理系统存储数据. 图 1 - ...
- GreenDao 数据库 升级 保留之前数据
很久没写博客了,最近一直很忙,没时间整理,一些内容都保存到草稿箱了,但是比较乱,需要整理后才能发,今天抽时间挑出来一篇,全是源码,描述的内容很少(基本没有,除了代码中的一些注解),相信能用到的朋友一看 ...
- 为什么数据库会丢失数据?
数据库管理系统在今天已经是软件的重要组成部分,开源的 MySQL.PostgreSQL 以及商业化的 Oracle 等数据库已经随处可见,几乎所有的服务都需要依赖数据库管理系统存储数据. 数据库不会丢 ...
- 数据错误循环冗余检查是什么意思_为什么数据库会丢失数据?今天我就来跟你掰扯掰扯
这份分布式一致性算法文档,足够你解决分布式系统 80% 核心问题zhuanlan.zhihu.com 从远程办公到简历被拒,再到斩获阿里offer,这份PDF功不可没zhuanlan.zhihu. ...
- Android版本升级同时Sqlite数据库的升级及之前数据的保留-转
http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...
- RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复
1.归档模式有备份,丢失数据文件的恢复 归档模式有备份,不管丢失什么数据文件,直接在RMAN下RESTOER--->RECOVER--->OPEN即可. RMAN> STARUP M ...
- 数据库篇之[bsp_advertpositions]数据表-BrnShop1.9升级至2.1升级说明(非官方版本)...
数据库篇之[bsp_advertpositions]数据表 主要描述在数据库方面进行升级(使用前请参照网上商城BrnShop1.9升级至2.1升级说明(非官方版本仅提供技术交流)的使用协议) 主要看下 ...
- 从0开始弄一个面向OC数据库(三)--数据库升级,数据迁移,删除数据
前言 首先,在上一篇文章从0开始弄一个面向OC数据库(二),讲解了如何向数据库保存或更新一个模型.如何查询数据库里面的数据.其次,本篇要说的内容有: 数据库更新.数据迁移. 删除数据 使用场景: 随着 ...
- 安装计算机更新会不会丢失东西,如何在升级或是重新安装macOS后不丢失数据
Hugh 于 2020/12/04更新 Mac数据恢复 摘要 只要有新的macOS出来就需要重新安装macOS.需要升级或重新安装macOS时,最不希望发生的就是丢失计算机上的数据.要在不丢失资料的情 ...
最新文章
- Linux命令学习总结:hexdump
- java spring框架 注解_史上最全的java spring注解
- 吐槽小程序开发踩过的坑,以及一些解决方法
- 【机器学习】周志华 读书笔记 第一章 绪论
- C#3.0语法新特性集合
- 【Chocolatey】查找包
- keepalived(9)——sorry_server
- 从扁平到立体:Windows 10 图标的演化
- Mysql和Oracle获取自增主键
- 部署在SAP云平台上的应用, 该如何解决跨域问题Cross Domain
- 什么是用户账户?-联科教育
- asp.net2.0自定义控件---鼠标移到按钮上更改背景颜色,移出后恢复
- MovieLens 1M 数据集
- srs之服务搭建+OBS推流(简单记录)
- leetcode每日一题2021.7.14【1818. 绝对差值和】
- 怎么调节台式计算机字体大小,电脑上怎么调整字体大小
- 经典贪吃蛇大战逆向_游戏内购
- 月饼事件技术还原 - 用js+Chorme来做抢电商的东西吧
- 北大oj百练-1003
- 何夕 - 六道众生·何夕科幻自选集(2014年1月31日)
热门文章
- 超图桌面开发VC++ 入门程序
- Spring.NET 学习总结
- IOS操作数据库总结
- SSRS:使用SQL2008教程学习Reporting Services之数据库AdventureWorks2008问题_学习笔记1
- MySQL 慢查询优化
- selenium3+python-多窗口、句柄(handle)
- MySQL服务安装和可视化工具安装
- 转:Linux实时将所有输出重定向到文件
- springboot oauth2登录成功处理器_Spring Boot Security 整合 OAuth2 设计安全API接口服务...
- python换成中文版_在python中如何将“\”替换为“/”?