我开发了一个 android 应用程序并发布了 1.0 版。该应用程序包含带有 5 个表的 SQLite 本地数据库。
现在我们计划发布 2.0 版本同时更新 1.0 版本的用户。在 2.0 版中,我们在之前的 5 个表中增加了两个表,现在是 7 个表。
现在我的问题是,1.0版本的用户在本地数据库中都有一些数据,如果他更新到2.0版本,之前的数据会丢失吗?如果是这样。那么替代方法是什么?
我开发了一个 android 应用程序并发布了 1.0 版。该应用程序包含带有 5 个表的 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。
更改您的数据库版本并在您的方法中添加额外的两个表创建方法onUpgrade(SQLiteDatabase db, int oldVersion, int newVesion)
。现在以前的数据不会丢失。
我希望这能帮到您。
你可以做一些SQLiteOpenHelper#onUpgrade
,获取一些旧数据。并插入新表