我獲得以下錯誤,但我不明白爲什麼:嵌套的異常是java.sql.SQLException中:無效的參數指標1
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;錯誤的SQL語法[UPDATE da_tracking SET ins_name = xyz,ins_dev_scripted = False WHERE ins_ID = 12];嵌套0例外是值java.sql.SQLException:無效的參數指標1.
------------------------ dao class-----
public int save(DboBean record) {
// TODO Auto-generated method stub
String sql = "UPDATE da_tracking"
+ " SET ins_name= " + record.getDboDevName()+ ","
+ " ins_dev_scripted = " + record.getDevScripted()
+ " WHERE ins_ID = " + record.getDboId();
Object[] params = new Object[] {record.getDboDevName(), record.getDevScripted()};
int[] types = new int[]{Types.VARCHAR, Types.BIT};
return jdbcTemplate.update(sql, params, types);
}
----------------------------Junit-----
bean.setDboDevName("xyz");
bean.setDboId(12);
int rowsAffected = objDao.save(bean);
System.out.println("Object is updated [" + bean.getDboId() + ", " + bean.getDboDevName() +
", " + bean.getDevScripted() + "]");
你知道爲什麼? 我的刪除&閱讀方法的工作。
您應該使用綁定變量(參數化查詢)是正確的,但這不是此錯誤的來源。你是對的,變量(可能只有'ins_name')需要被引用,但是SQL解析器還沒有得到那麼深的解析查詢。 –
更新了代碼。請立即檢查。 – Garbage
是的,它的工作原理:-D Thx – user1631032