我正在尝试在我的Android Java应用程序中的onUpgrade()
上执行此操作:
try {
db.execSQL("SELECT fechacontrol from parametres", null);
} catch(Exception e) {
e.printStackTrace();
db.execSQL("ALTER TABLE parametres ADD COLUMN fechacontrol BIGINT");
}
我的问题是,列
fechacontrol
存在,但是我总是以异常块结尾,然后应用程序由于列名重复而崩溃。我究竟做错了什么?
谢谢大家
最佳答案
由于绑定参数为null,execSQL(anything, null)
将抛出IllegalArgumentException
。这就是为什么您总是以catch
结尾。在不使用bindargs的情况下执行SQL有execSQL(String)
重载。
但是,不应该这样进行数据库升级。模式版本号存储在数据库文件中,您可以在onUpgrade()
中将其作为参数获取。使用该信息推断需要更新的内容。