Android应用更新(之前的任务)

时间:2014-03-06 22:21:02

标签: android sqlite installation

假设我的设备上安装了一个适用于SQLite数据库的应用程序,该数据库是在第一次安装时创建的。现在,假设我对涉及对数据库模式进行一些更改的新版本进行了一些更改。显然,如果安装了新版本,最好让用户知道它将擦除数据库。如何在安装之前制作此广告,以便用户可以采取必要的步骤以丢失其数据?

简而言之,有没有办法打开一个对话,向用户宣传可能的数据丢失并让他决定该怎么做?

提前致谢,

2 个答案:

答案 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,需要在表格中使用新元素。然后调用一种根据需要移动数据的方法。

您应该能够管理数据库中的任何更改