更新后保留SQLite数据

Sna*_*ake 7 sqlite android

我有一个带有3个表的sqlite的应用程序.我担心的是,如果我引入一个添加另一个表的更新(这样就是4个表),那么更新后的版本将消灭数据库.

如果备份在更新之前发生并且在更新之后恢复,我该如何备份/恢复数据库?如果我使用IO(复制到SD卡并复制回来),那么它将失败.

我想可能是将数据导出到xml并手动加载.还有另外一种方法吗?关于如何做的任何例子?

Sam*_*Sam 4

如果您只想添加新表,请注释掉onUpgrade()方法中的 DROP TABLE 命令。您可以完全控制其中的代码,onUpgrade()因此它可以是:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("CREATE TABLE ...");
}
Run Code Online (Sandbox Code Playgroud)

从技术上讲,您甚至不需要增加数据库版本,只要您有权访问数据库副本,db就可以执行 CREATE 语句。

  • 好的。删除表的经典“onUpgrade()”方法非常原始。(擦除所有数据是没有用的。)更聪明、精通 SQL 的方法使用 [ALTER TABLE](http://www.sqlite.org/lang_altertable.html) 来添加列或以其他方式将数据欺骗到新架构中。[这个问题](http://stackoverflow.com/q/9109837/1267661)演示了一位作者的多版本升级。 (2认同)