我正在尝试在我的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
存在,但我总是在异常块中结束,然后应用程序崩溃,因为列名重复。
我做错了什么?
谢谢大家。
答案 0 :(得分:1)
execSQL(anything, null)
将抛出IllegalArgumentException
。这就是为什么你总是最终进入catch
。执行没有bindargs的SQL会有execSQL(String)
重载。
但是,不应该像这样进行数据库升级。架构版本号存储在数据库文件中,您可以在onUpgrade()
中将其作为参数获取。使用该信息来推断需要更新的内容。