2012-10-26 45 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()); 
相关问题