如果我想保留一些旧数据并迁移到新版本的数据库,onUpgrade方法中的正确步骤是什么?
是否有简化版或有更好的方法?谢谢!
答案 0 :(得分:3)
升级数据库:
在表格中添加新字段
执行onUpgrade中的以下步骤
复制临时表中的旧数据
使用新字段创建新表
再次将数据从临时表复制到新表
drop temp table
还在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.创建新表
注意:管理您的数据库版本,下一版本相同,请检查旧版本的工作与否。