Android升级应用,不会丢失数据

时间:2015-01-20 20:25:49

标签: android

我遇到问题,我想升级我的应用,但我不想丢失存储的数据。

问题是我的数据库代码中有这个:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + POINTS_TABLE);
    db.execSQL("DROP TABLE IF EXISTS " + NETWORKS_TABLE);
    onCreate(db);
}

我还想过各种数据备份,所以我至少可以保存数据,然后再升级。问题是我认为我只有两个选择:

a)根设备 b)通过usb连接

问题是设备usb不起作用。我的电脑似乎没有认出来。

有没有保存我的数据?我已经尝试过应用程序Astro,Super Backup,Titanium Backup,但所有这些都需要root。问题是,如果没有USB电缆我就无法生根。

我的平板电脑是三星Galaxy Tab 2 7.0。有小费吗?

2 个答案:

答案 0 :(得分:3)

onCreate中,您可以执行"CREATE TABLE IF NOT EXISTS"

onUpdate中,您可以在需要时"ALTER TABLE"

答案 1 :(得分:0)

这是数据库版本,而不是应用版本。如果您的数据库结构正在发生变化,您可以创建更智能的升级路径。 http://blog.adamsbros.org/2012/02/28/upgrade-android-sqlite-database/的一个例子是:

public void onUpgrade(
        final SQLiteDatabase db, final int oldVersion,
        final int newVersion)
    {
        int upgradeTo = oldVersion + 1;
        while (upgradeTo <= newVersion)
        {
            switch (upgradeTo)
            {
                case 5:
                    db.execSQL(SQLiteSet.V5_ADD_LAST_CARD);
                    db.execSQL(SQLiteCard.V5_ADD_FAILED);
                    break;
                case 6:
                    db.execSQL(SQLiteSet.V6_ADD_IMPORT_TYPE);
                    break;
                case 7:
                    db.execSQL(SQLiteSet.V7_ADD_SHORT_FNAME);
                    break;
            }
            upgradeTo++;
        }
    }