我知道SQLite版本控制有很多答案,但我无法找到针对我的具体问题的答案。很长一段时间我对版本1做得很好。然后,我需要添加另一列" TAG"到我的表并在onUpgrade中实现了以下代码。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) db.execSQL(DATABASE_ALTER_TAG);
}
效果很好。没有问题。 TAG专栏按预期读写工作 - 直到我完全卸载后重新安装。数据库现在无法使用在卸载/重新安装之前工作的代码。
我怀疑是因为在卸载/重新安装&#34;旧版本&#34;为null(不是&lt; 2)并且未添加TAG列。我虽然不完全确定。我的onUpgrade代码是问题吗?
我想我可以使用TAG列将我的数据库重写为版本1,但我想知道我的代码有什么问题以供将来参考。
编辑问题
好的,感谢目前为止的回复。我理解如何让数据库为正在安装应用程序的人工作。我也理解如何让DB为从版本1到版本2的人工作。我还不知道如何让它为两个用户工作(全新安装与刚刚升级的人)
答案 0 :(得分:1)
你的假设绝对不正确。 原始数据类型不是对象,因此不为空。
确保您的创建语句,即db.execSQL(DATABASE_CREATE);
反映新的数据库表结构,而不是旧数据库表结构,即使用新的TAG列。