android - 在 Android 中升级 SQLite 数据库

标签 android sqlite

我正在制作一个使用 SQLite 数据库的 android 应用程序。我已经发布了它的一个版本,现在发布了第二个和第三个版本,假设我需要更改数据库表,例如添加/删除字段。

那么我该如何在 Android 中处理此升级。这里我不想像东西一样删除完整的表格,这里应该使用 Alter 来更新表格。

假设用户已经安装了我的应用程序的第一个版本,然后几天后我发布了下一个版本 1.1 并更改了数据库表 - 添加了一个字段,这里用户没有升级它,同时我再次发布1.2 又增加了一个字段

所以当这个用户将我的应用程序从版本 1 升级到版本 1.2 时,我如何处理这种情况,其中缺少版本 1.1我添加的属性也遗漏了,这会产生问题。

有解决办法吗??

最佳答案

假设您使用的是 SQLiteOpenHelper,只需增加数据库架构更改的任何待发布版本的数据库版本号。如果周围有较旧的数据库文件,您的 onUpgrade() 将被调用,以便您可以从任何旧版本迁移数据库。

例如,如果您的 1.0 数据库版本是 1,1.1 是 2,1.2 是 3,用户正在将版本 1.0 更新到 1.2。 onUpgrade()oldVersion 设置为 1 且 newVersion 设置为 3 的情况下调用。从这些版本号中,您的代码可以确定需要什么完成,例如:

@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    switch (oldVersion) {
        case 1:
        updateFrom1To2(db);

        case 2: // fall-through
        updateFrom2To3(db);

        break;

        default:
        Assert.fail("You forgot to write code for oldVersion " + oldVersion);
    }
}

关于android - 在 Android 中升级 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22904743/

相关文章:

android - 如何在 SQLite WHERE 子句中包含 bool 值

java - android比较2张图片并突出显示差异

android - mBluetoothGatt.getService(uuid) 返回 null

安卓录音机api

java - 在 Android 中使用 SQLite 创建表时出现问题

sqlite - 部署到 Monodroid 时丢失 Sqlite 表

android - 可绘制开始不适用于 Material 按钮

安卓模拟器 : Failed to pull selection

python - 添加到数据库 SQlite Python

android - 使用 CursorLoader 查询 SQLite 数据库并填充 AutoCompleteTextView