Android SQLite数据库升级

来源:互联网 发布:网络棋牌上有赢钱的吗 编辑:程序博客网 时间:2024/05/16 12:06
版本升级需要数据库升级时,需要保留原有版本的缓存数据;需要对数据库进行增量升级,有几种解决方案:

方案一:
先将现有数据库文件复制备份到SD卡,新建好新的数据库后,再将SD卡上的备份数据读取写入到新的数据库。处理繁琐,版本间隔大数据表结构有修改处理麻烦。

方案二:
1、 新增表,直接增加表。
2、 针对表结构有修改的数据表;先将原表oldTable修改表名称为“newTable”,新建新表,将原表中数据复制到新表中。
跟方案一类似,版本间隔多,表结构修改多时,处理繁琐麻烦。

//修改表名称ALTER TABLE oldTable RENAME TO newTable;//从旧表中查询出数据 并插入新表INSERT INTO newTable SELECT culumName FROM oldTable

方案三:
一个版本一个版本升级,不是一步升级到当前的数据库版本;假设当前的版本是5,升级前的版本是2;该方式是先升级到3,在升级到4,在升级到5。
优点:只需要处理当前版本和上一个版本的升级,不需要关心其他版本数据库的修改点。
缺点:由于是一个版本一个版本往上升级,升级的版本间隔较大时, 花费的时间可能会比较多。
如下,使用switch方式,注意case间不能有break。

switch (oldVersion) {case 2:{    //修改表1    //增加表2}case 3:{    //删除表1    //修改表2    //增加表3}default:break;}
一些修改表的SQL语句
//新建表CREATE TABLE IF NOT EXISTS tableName (   columId INTEGER PRIMARY KEY AUTOINCREMENT,   colum2 TEXT NOT NULL)//删除表DROP TABLE IF EXISTS tableName//修改表名称ALTER TABLE oldTable RENAME TO newTable;//增加字段ALTER TABLE tableName ADD COLUMN newColum TEXT
0 0