我在SQLITE中执行select时出错

时间:2016-09-07 15:10:59

标签: java android sqlite

我正在尝试在我的Android Java App onUpgrade()中执行此操作:

try {
    db.execSQL("SELECT fechacontrol from parametres", null);
} catch(Exception e) {
    e.printStackTrace();
    db.execSQL("ALTER TABLE parametres ADD COLUMN fechacontrol BIGINT");
}

我的问题是,列fechacontrol存在,但我总是在异常块中结束,然后应用程序崩溃,因为列名重复。 我做错了什么?

谢谢大家。

1 个答案:

答案 0 :(得分:1)

由于null bindargs,

execSQL(anything, null)将抛出IllegalArgumentException。这就是为什么你总是最终进入catch。执行没有bindargs的SQL会有execSQL(String)重载。

但是,不应该像这样进行数据库升级。架构版本号存储在数据库文件中,您可以在onUpgrade()中将其作为参数获取。使用该信息来推断需要更新的内容。