我开发了一个Android应用程序并发布了1.0版本。该应用程序包含5个表的SQLite本地数据库。Android SQLite数据库和应用程序更新
现在我们计划发布2.0版本也更新版本1.0的用户。在2.0版本中,我们在前面的5个表中包含了额外的两个表,所以现在有7个表。
现在我的问题是,版本1.0的用户都在本地数据库中有一些数据,如果他更新到2.0版,以前的数据会丢失?如果是这样。那么替代方法是什么?
我开发了一个Android应用程序并发布了1.0版本。该应用程序包含5个表的SQLite本地数据库。Android SQLite数据库和应用程序更新
现在我们计划发布2.0版本也更新版本1.0的用户。在2.0版本中,我们在前面的5个表中包含了额外的两个表,所以现在有7个表。
现在我的问题是,版本1.0的用户都在本地数据库中有一些数据,如果他更新到2.0版,以前的数据会丢失?如果是这样。那么替代方法是什么?
你应该把所有发生在你的onUpgrade方法,你可以使用此代码:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "ALTER TABLE " + TABLE_SECRET + " ADD COLUMN " +
"name_of_column_to_be_added" + " INTEGER";
db.execSQL(sql);
}
这在当前数据库中添加一列。你的数据库不会丢失数据。提醒:执行getWriteableDatabase或getReadableDatabase时,将调用onUpgrade,并且数据库的版本与旧版本不同。
只是为了澄清,TABLE_SECRET是表名称。 – Rexcirus
你可以在SQLiteOpenHelper#onUpgrade
上做一些,得到一些旧的数据。并插入到新表
更改您的db版本,并在onUpgrade(SQLiteDatabase db, int oldVersion, int newVesion)
方法中添加额外的两个表创建方法。现在以前的数据不会丢失。
我希望这会帮助你。
如果您更改了数据库架构,旧的数据库无法保留 – thepoosh
@thepoosh谢谢您的回复。如果我没有更改数据库架构,但使用新功能更新了版本。在这种情况下? –
尝试阅读此答案:http://stackoverflow.com/a/8627242/1056359 – thepoosh