Android Sqlite Upgrade
来源:互联网 发布:淘宝我的积分查询 编辑:程序博客网 时间:2024/05/22 05:15
数据库升级,表中新增字段,同时需要保持原表中的数据。
参考官方文档
http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html
根据 version 可以向上升级数据库,也可以向下升级,onUpGrage(),onDownGrage() ,这个version是在SQLiteOpenHelper Constructors 时的version
参考这篇博客:
http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html
注意一点,直接在表中增加一个字段是不行的。
升级步奏:
1.重命名A表为temp_A
2.创建新表A
3.temp_A中的数据拷贝到A中(注意新字段)
4.删除temp_A表,
5.为新字段赋值
1-4 在一个事务中操作,5在一个事务中操作,
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.beginTransaction();
try {
// 1
db.execSQL("ALTER TABLE A RENAME TO temp_A");
// 2
db.execSQL("CREATE TABLE \"A\" (\"uid\" VARCHAR PRIMARY KEY NOT NULL )");
// 3
db.execSQL("INSERT INTO A SELECT uid FROM temp_A");
// 4
db.execSQL("DELETE FROM temp_A");
db.execSQL("DROP TABLE IF EXISTS temp_A");
db.setTransactionSuccessful();
} catch (Exception e) {
e.printStackTrace();
}
db.endTransaction();
db.beginTransaction();
try {
// 5 这里做新字段赋值操作,数据大的话还是用事务操作
db.execSQL("UPDATE A SET uid = "newuid", null);
db.setTransactionSuccessful();
} catch (Exception e) {
e.printStackTrace();
}
db.endTransaction();
}
- Android Sqlite Upgrade
- SQLite数据库的upgrade方法
- android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1:解决
- android promotion and upgrade
- 【Android】【Sqlite】sqlite 相关
- android sqlite
- Android SQLite
- android---SQLite
- android sqlite
- android sqlite
- Android SQLite
- Android SQLite
- Android SQLite
- SQLite Android
- Android SQLite
- android sqlite
- Android SQLite
- Android SQLite
- 集合的知识及一道练习题
- [iOS]使用Audio Queue Services 播放和录制音频
- hadoop2.2.0 hadoop-auth pom文件中的一个 bug
- php面向对象之多态
- UI组件设计:减少冗余代码--类继承关系的考量
- Android Sqlite Upgrade
- 2014年4月1日Linux学习日志--安装mysql
- (转) 更改SQLServer实例默认字符集
- c 中typedef函数的用法
- nodejs使用jquery风格环境安装
- Spring中transactionAttributes的详解
- 树莓派学习笔记——RPi.GPIO 流水灯
- 背包问题(Knapsack problem)之01
- 算法杂货铺