2012-10-26 70 views
2

我正在使用spring的JDBC模板的queryForInt()方法。它有兩個參數:查詢字符串和參數化SQL的第二個參數。我有像這樣的SQL查詢:從表X中選擇計數(*),其中x.x1 =?和x.x2 =? 。我在參數列表中傳遞兩個整數值:spring queryForInt方法拋出異常無效列類型

  • args.add(12); args.add(50);

    DB中x1和x2的數據類型爲Number。

    此方法總是拋出PreparedStatementCallback;未歸類SQL的SQLException [< >>]; SQL狀態[99999];錯誤代碼[17004];無效的列式

我無法弄清楚什麼是錯的。 但是,如果我在SQL中對參數值進行硬編碼並在queryForInt的單參數版本方法中使用相同的值;它的工作原理是:「從表X中選擇count(*),其中x.x1 = 12和x.x2 = 50」。這工作。

任何想法這裏有什麼問題?我正在使用spring 3.0.6版本。

+1

請加你ddl –

回答

1

至於我明白你的R代碼裏面的樣子:

List args = new ArrayList(); 
args.add(12); args.add(50); 
jdbcTemplate.queryForInt(sql, args); 

queryForInt期待對象數組這裏(Object...)不是列表,並解釋ARGS作爲一個參數。要修復它的代碼應該看起來像:

List args = new ArrayList(); 
args.add(12); args.add(50); 
jdbcTemplate.queryForInt(sql, args.toArray()); 
相關問題