2013-06-03 72 views
20

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

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

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

+0

如果您更改了数据库架构,旧的数据库无法保留 – thepoosh

+0

@thepoosh谢谢您的回复。如果我没有更改数据库架构,但使用新功能更新了版本。在这种情况下? –

+2

尝试阅读此答案:http://stackoverflow.com/a/8627242/1056359 – thepoosh

回答

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,并且数据库的版本与旧版本不同。

+0

只是为了澄清,TABLE_SECRET是表名称。 – Rexcirus

1

你可以在SQLiteOpenHelper#onUpgrade上做一些,得到一些旧的数据。并插入到新表

2

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

我希望这会帮助你。

相关问题