如果我想保留一些旧数据并迁移到新版本的数据库,onUpgrade方法中的正确步骤是什么?
- 保留旧数据
- 删除旧表
- 创建新表并插入旧数据
有没有简化版本或者有更好的方法?谢谢!
升级数据库:
在表中添加新字段
在 onUpgrade 中执行以下步骤
复制临时表中的旧数据
使用新字段创建新表
再次将数据从临时表复制到新表
删除临时表
还在 onCreate 中为新用户创建新表
升级示例代码
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < newVersion) {
if (oldVersion == 3) {
/**
* code is upgrade privious version to letest version
* */
db.beginTransaction();
db.execSQL("ALTER TABLE " + TableConstants.TABLE_Mst.getTableName()
+ " RENAME TO " + TableConstants.TABLE_Mst.getTableName() + "_Obsolete");
db.execSQL(TABLE_CREATE_query_Mst);
db.execSQL("INSERT INTO " + TableConstants.TABLE_Mst.getTableName() + "("
+ "f1, f2, f3) "
+ " SELECT f1, f2, f3 FROM " + TableConstants.TABLE_Mst.getTableName() + "_Obsolete");
db.execSQL("DROP TABLE IF EXISTS "
+ TableConstants.TABLE_Mst.getTableName() + "_Obsolete");
db.setTransactionSuccessful();
db.endTransaction();
db.setVersion(newVersion);
}
}
}
在数据库中添加新表
执行以下步骤
在 onUpgrade 中
1.创建新表
在 onCreate 中
1.创建新表
注意:管理您的数据库版本,下一个版本也是如此,检查旧版本是否有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)