假设我的设备上安装了一个适用于SQLite数据库的应用程序,该数据库是在第一次安装时创建的。现在,假设我对涉及对数据库模式进行一些更改的新版本进行了一些更改。显然,如果安装了新版本,最好让用户知道它将擦除数据库。如何在安装之前制作此广告,以便用户可以采取必要的步骤以丢失其数据?
简而言之,有没有办法打开一个对话,向用户宣传可能的数据丢失并让他决定该怎么做?
提前致谢,
何
答案 0 :(得分:1)
您不需要擦除数据库来更新应用程序,这样做并不是一个很好的用户体验,并且考虑到Android中的SQLite实现旨在允许您升级数据库,这也是不必要的。
只需在SQLite帮助程序类中实现onUpgrade方法,并提供升级步骤,以便在数据库的不同版本之间移动。
SQLite支持的ALTER TABLE语句非常有限,但您可以添加列,如果需要进行更复杂的结构更改,则可能需要将数据复制到临时表drop /创建表然后再次插入。 / p>
答案 1 :(得分:1)
您的数据库应该有一个更新数据库的方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// do something to upgrade
}
但默认情况下不调用,但是当您的应用首次尝试打开数据库时。此时,您应该构建一个对话框,指示您的用户并进行升级。
也可以在onUpgrade方法中更改用户的数据库。例如,像这样的字符串:
private static final String ALTER_TABLE3 = "ALTER TABLE exercises ADD COLUMN exscore REAL DEFAULT 0.0";
可以在onUpgrade中使用,如下所示:
if (oldVersion == 5) {
db.execSQL(ALTER_TABLE3);
// now copy all of the values from integer to real
setUpMoveRoutine = true;
}
我从v4升级到v5,需要在表格中使用新元素。然后调用一种根据需要移动数据的方法。
您应该能够管理数据库中的任何更改