不同版本的APP,数据库结构变化后该如何处理?
来源:互联网 发布:马哥linux 2017网盘 编辑:程序博客网 时间:2024/06/05 16:42
如果是移动端, 视数据的重要性来定, 如果不重要, 那就忽视它. 如果重要, 就要额外做一个检查Documents(我这里假设你的数据文件放在Documents下)下的数据文件, 如果存在, 就SQL导出再加上按照新的数据结构导入到新的数据文件. 也就是两句SQL的事, 在升级后第一次进入应用的时候做这个事.
如果是服务端, 正常情况还是需要做接口层(当然, 我也遇到没做接口层, 直接远程数据库操作的, 对这种, 我无话可说), 接口层的变动幅度, 往往没有数据层的变动大, 有时候, 哪怕数据结构变化了, 但接口层还是一样. 如果是碰到数据层变化逼迫接口层变化的情况, 那就需要保留老接口的同时, 提供新接口服务, 直到使用老接口的app保有量低到一定程度, 再关闭老接口. 我的产品接口, 是在接口中加上一个v(version)参数作为版本判断标志.
.首先我们需要把原来的数据库表重命名一下
public static final String SQL_ALTER_TABLE_NAME = "alter table " + A + " rename to temp_A";
原来的表结构是:
private static final String SQL_CREATE_TABLE = "create table if not exists " + A + "(id integer primary key autoincrement,...)";
2.然后把备份表temp_A中的数据copy到新创建的数据库表A中,这个表A没发生结构上的变化
public static final String INSERT_SUBSCRIBE = "select 'insert into A (field1, field2...) values ('''||field1||''','''||field2||''',...)' as insertSQL from temp_A";
3.此时临时表中的数据已经全部复制到了表A中,
4.删除备份表
public static final String DELETE_TEMP_TABLE = "delete from temp_A "; public static final String DROP_TEMP_TABLE = "drop table if exists temp_A";
5.然后把数据库版本号改为比之前高的版本号,在OnUpgrade方法中执行上述语句就行.
1 0
- 不同版本的APP,数据库结构变化后该如何处理?
- 该如何区分不同版本的ABBYY FineReader
- 该如何区分不同版本的ABBYY FineReader
- 如何比较mysql数据库结构的不同?
- APP如何适配不同的Android版本
- [ER/Studio]进行不同版本数据库结构的合并
- cocos2dx不同版本间的变化
- Linux-2.6.38后版本的变化
- Jquery1.6版本后attr的变化
- 离职后,我们该如何处理社保!
- skb结构变化后的操作
- bug修改第一弹:修改.java文件后,发现classes下的文件并没有变化,该怎么处理
- 利用productFlavors创建不同版本的App
- 公司IOS接手该如何迭代app版本
- 如何在一个设备上安装一个App的两个不同版本
- xcode IOS开发中如何让APP的不同版本共存于设备上
- APP版本升级,数据库数据如何办?
- 一个新的App该如何推广?
- EasyUI - datagrid中单元格里编辑控件的单击事件如何获取当前行的index
- php匹配图片、视频文件、音乐文件的正则表达式
- 新浪微博第三方登录有感
- 过滤HTML标签和保留特殊标签
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 不同版本的APP,数据库结构变化后该如何处理?
- linux下的C语言开发(gdb调试)
- Java 学习笔记——反射
- iOS 拆分stroyboard
- phpMyAdmin安装教程
- Iptables 记录
- getAttribute与getParameter()
- week6---10月16日 CSS样式
- 25 Java Array Interview Questions And Answers