繁体   English   中英

SQLite 数据库升级

[英]SQLite Database Upgrading

我对 android SQLite 数据库处理有点困惑。 我浏览了教程,但我没有得到确切的意思。

我们可以有一个扩展SQLiteOpenHelper的数据库 class ,并且可以覆盖onCreate()方法并创建一个数据库。

升级数据库部分有点混乱。 在以下方法中,如何处理版本onUpdate(SQLiteDatabase db,int old Version,int newVerison)

是不是说我们第一次创建数据库的时候版本是1。那么修改一次版本就变成2了。那么如果我们要再次修改old Version = 2, newVerison = 3
[ onUpdate(SQLiteDatabase db,int old Version,int newVerison) ]

当我们传递构造函数版本时,将执行此方法,如下代码所示(如 2)

public DatabaseHelper(Context context) {
  super(context, dbName, null,2);
}

我需要知道当我们需要调用onUpgrade()方法时,我们应该始终将版本传递为 2,还是每次都必须为以前的版本增加一个。

每次架构更改时增加您的数据库版本。

你永远不需要直接调用onUpgrade Android 将在您打开数据库时通过将数据库版本与您的代码指定为当前版本的版本进行比较来在需要时调用它。

您只需要在onUpgrade中处理升级过程 - 它可能 go 是这样的:

int curVer = oldVersion;
while ( curVer < newVersion ) {
    curVer++;
    switch ( curVer ) {
        case 2: {
            // Upgrade from V1 to V2
            break;
        }
        case 3: {
            // Upgrade from V2 to V3
            break;
        }
        case 4: {
            // Upgrade from V3 to V4
            break;
        }
    }
}

假设您的 newVersion 为 4 而 oldVersion 为 1 - 第一次迭代会将 curVer 增加到 2 并将运行 V2 到 V3 升级代码。 第二次迭代将 curVer 增加到 3 并运行 V2 到 V3 升级代码,最后一次迭代将 curVer 增加到 4 并运行 V3 到 V4 升级代码。

这适用于所有小于 newVersion 的 oldVersion 值。 如果您的用户跳过应用程序的升级,它将通过中间版本顺序升级。

我使用这种方法使数据库模式演变更容易一些,您可能会发现它也很有用。

如何维护数据库版本完全取决于您。 您可以在更改表结构或修改内容后更改您的版本。 维护版本控制没有硬性规定。 这取决于项目的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM