SQLiteOpenHelper版本的最大值?

时间:2014-03-31 10:55:58

标签: android sqliteopenhelper

我想知道SQLiteOpenHelper版本的最大数量是多少?

对于版本代码,我发现SO主题说这个数字只是一个整数来表示代码库的版本。只要这个数字在部署新版本时不断增加就没有问题,价值可以和我们一样多。

但是,我找不到有关SQLiteOpenHelper版本最大值的任何信息,如果我们一次增加1个以上的数字会发生什么。 (在我发现的每个在线教程中,这个数字一次增加1,说3>> 4或10>> 11)

2 个答案:

答案 0 :(得分:3)

以下是SQLiteOpenHelper.getWritableDatabase()方法的一大块代码:

int version = db.getVersion();
if (version != mNewVersion) {
    db.beginTransaction();
    try {
        if (version == 0) {
            onCreate(db);
        } else {
            onUpgrade(db, version, mNewVersion);
        }
        db.setVersion(mNewVersion);
        db.setTransactionSuccessful();
    } finally {
        db.endTransaction();
    }
}

如果版本号为0,则调用onCreate,否则调用onUpgrade;实施是你的责任。

增量无关紧要,只要版本号大于零,它就可以与Integer.MAX_VALUE一样大。

答案 1 :(得分:1)

在数据库中,版本号与PRAGMA user_version一起存储,因此它必须符合带符号的32位整数。 (Android库使用相同的数据类型。)

有效版本号必须大于零,因此您可以拥有2147483647个不同版本,但没有其他限制。

版本号一次可以跳过1次以上。 这可能是因为您从未使用过其他数字,或者因为应用程序很长时间没有更新。 (在后一种情况下,您的onUpgrade方法必须能够通过多个步骤进行升级。)