升级应用时 升级数据库版本---保留原来的数据
Posted 短暂的火光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了升级应用时 升级数据库版本---保留原来的数据相关的知识,希望对你有一定的参考价值。
修改表定义
SQLite数库对ALTER TABLE命令支持非常有限,只能在表末尾添加列,不能修改列定义,不能删除已有的列。那么如果要修改表呢?我们可以采用临时表的办法。具体来说有四步:
-
将现有表重命名为临时表;
-
创建新表;
-
将临时表的数据导入新表(注意处理修改的列);
-
删除临时表。
以例子中的v2升级到v3为例:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion==2){
db.execSQL("ALTER TABLE t_region RENAME TO t_region_temp");
db.execSQL("CREATE TABLE t_region(_id integer primary key"
+ "autoincrement, region varchar, code varchar, "
+ "country varchar)");
db.execSQL("insert into t_region(_id, region, code, country) "
+ "select _id, region, code, \"CHINA\" from t_region_temp");
db.execSQL("DROP TABLE t_region_temp");
}
}
以上是关于升级应用时 升级数据库版本---保留原来的数据的主要内容,如果未能解决你的问题,请参考以下文章