我对 android SQLite 数据库处理有点困惑。我浏览了教程,但没有得到确切的要点。
我们可以有一个扩展 SQLiteOpenHelper
的数据库类,并且可以覆盖 onCreate()
方法并创建一个数据库。
升级数据库部分有点困惑。在下面的方法中,如何处理版本
onUpdate(SQLiteDatabase db,int 旧版本,int newVerison)
是不是说我们第一次创建数据库的时候版本是1,然后修改之后版本就变成2了。
那么如果我们要再次修改
旧版本 = 2,新版本 = 3
[onUpdate(SQLiteDatabase db,int old Version,int newVerison)
]
当我们传递构造函数版本时,将执行此方法,如下面的代码(如 2)
public DatabaseHelper(Context context) {
super(context, dbName, null,2);
}
我需要知道当我们需要调用 onUpgrade()
方法时,我们应该始终将版本作为 2 传递,还是每次都必须为以前的版本增加一个。
最佳答案
每次架构更改时都增加数据库版本。
您永远不需要直接调用 onUpgrade
。当您打开数据库时,Android 会在需要时调用它,方法是将数据库的版本与您的代码指定为当前版本的版本进行比较。
您只需要在 onUpgrade
中处理升级过程 - 它可能是这样的:
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 的升级代码。
这适用于小于新版本的所有旧版本值。如果您的用户跳过应用程序的升级,将依次升级到中间版本。
关于android - SQLite 数据库升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580849/