spring queryForInt方法抛出异常无效的列类型

时间:2012-10-26 05:13:50

标签: spring spring-jdbc

我正在使用spring JDBC模板的queryForInt()方法。它有两个参数:查询字符串和参数化SQL的第二个参数。我有类似的SQL查询:从表X中选择count(*),其中x.x1 =?和x.x2 =? 。我在参数列表中传递了两个整数值:

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

    DB中的x1和x2的数据类型是Number。

    此方法始终抛出PreparedStatementCallback;未分类SQL的SQLException [<>>]; SQL状态[99999];错误代码[17004];列类型无效

我无法弄清楚出了什么问题。 但是,如果我在SQL中对参数值进行硬编码并在queryForInt的单参数版本方法中使用相同的值;它起作用:“从表X中选择计数(*),其中x.x1 = 12,x.x2 = 50”。这很有效。

知道这里有什么问题吗?我使用的是spring 3.0.6版本。

1 个答案:

答案 0 :(得分:1)

据我所知,您的代码如下:

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());