Android SQLite数据库和应用更新

时间:2013-06-03 06:01:32

标签: android sqlite android-contentprovider android-sqlite

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

现在我们计划发布2.0版本,也会更新1.0版用户。在2.0版本中,我们包含了前两个表格的额外两个表格,现在有7个表格。

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

3 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:2)

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

我希望这会对你有所帮助。

答案 2 :(得分:1)

您可以在SQLiteOpenHelper#onUpgrade上执行一些操作,获取一些旧数据。并插入新表