在Android中升级数据库的正确方法是什么
如果我想保留一些旧数据并迁移到数据库的新版本,onUpgrade方法中的正确步骤是什么 保留旧数据 扔掉旧桌子 创建新表并插入旧数据 有一个简化的版本还是有更好的方法?谢谢 升级数据库: 在表中添加新字段 在onUpgrade中执行以下步骤 复制临时表中的旧数据 使用新字段创建新表 再次将数据从临时表复制到新表 下降温度表 还可以在onCreate中为新用户创建新表 升级时的示例代码在Android中升级数据库的正确方法是什么,android,sqlite,Android,Sqlite,如果我想保留一些旧数据并迁移到数据库的新版本,onUpgrade方法中的正确步骤是什么 保留旧数据 扔掉旧桌子 创建新表并插入旧数据 有一个简化的版本还是有更好的方法?谢谢 升级数据库: 在表中添加新字段 在onUpgrade中执行以下步骤 复制临时表中的旧数据 使用新字段创建新表 再次将数据从临时表复制到新表 下降温度表 还可以在onCreate中为新用户创建新表 升级时的示例代码 public void onUpgrade(SQLiteDatabase db, int oldVersion,
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.创建新表
立即创建
1.创建新表
注意:管理您的数据库版本,与下一版本相同,请检查旧版本是否有效 是否正在更改要保留数据的表的架构?如果是用户创建的,则应保留旧数据。您可以随时更改表以修改表结构。@sachingarg,是的,数据库架构已更改,必须恢复部分旧数据,干杯。@WenChao,我认为任何简化的方法都不可能。我能想到的一种方法是,修改onUpgrade方法中的所有表,然后为新添加的列插入默认值。将保留所有现有列的数据。请确保在升级时没有使用任何drop/delete语句。@sachingargYeah,看来我们最终必须编写一些样板代码。不过还是要谢谢你。在onUpgrade中使用事务或setVersion是错误的;这已经由SQLiteOpenHelper处理。在许多情况下,使用ALTERTABLE可以添加列。。。添加列。。。有关限制,请参阅。