23

我开发了一个 android 应用程序并发布了 1.0 版。该应用程序包含带有 5 个表的 SQLite 本地数据库。

现在我们计划发布 2.0 版本同时更新 1.0 版本的用户。在 2.0 版中,我们在之前的 5 个表中增加了两个表,现在是 7 个表。

现在我的问题是,1.0版本的用户在本地数据库中都有一些数据,如果他更新到2.0版本,之前的数据会丢失吗?如果是这样。那么替代方法是什么?

4

3 回答 3

26

您应该将所有更改放在您的 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。

于 2013-06-03T06:13:18.733 回答
2

更改您的数据库版本并在您的方法中添加额外的两个表创建方法onUpgrade(SQLiteDatabase db, int oldVersion, int newVesion)。现在以前的数据不会丢失。

我希望这能帮到您。

于 2013-06-03T06:13:47.610 回答
1

你可以做一些SQLiteOpenHelper#onUpgrade,获取一些旧数据。并插入新表

于 2013-06-03T06:07:06.797 回答