我正在使用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版本。
答案 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());