版本升级需要数据库升级时,需要保留原有版本的缓存数据;需要对数据库进行增量升级,有几种解决方案:
方案一:
先将现有数据库文件复制备份到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