我想知道SQLiteOpenHelper版本的最大数量是多少?
对于版本代码,我发现SO主题说这个数字只是一个整数来表示代码库的版本。只要这个数字在部署新版本时不断增加就没有问题,价值可以和我们一样多。
但是,我找不到有关SQLiteOpenHelper版本最大值的任何信息,如果我们一次增加1个以上的数字会发生什么。 (在我发现的每个在线教程中,这个数字一次增加1,说3>> 4或10>> 11)
答案 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
方法必须能够通过多个步骤进行升级。)