Android SQLite数据库版本2错误

时间:2017-01-29 21:13:36

标签: java android sqlite

我知道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的人工作。我还不知道如何让它为两个用户工作(全新安装与刚刚升级的人)

1 个答案:

答案 0 :(得分:1)

你的假设绝对不正确。 原始数据类型不是对象,因此不为空

确保您的创建语句,即db.execSQL(DATABASE_CREATE);反映新的数据库表结构,而不是旧数据库表结构,即使用新的TAG列。