请建议一些使用jdbctemplate执行以下查询的方法。
我尝试了以下方法,但遇到了无效的列类型问题。 我正在传递以下内容:
update student set result='pass' where stud_id in (100,101,102);
我尝试了以下方法,但遇到了无效的列类型问题。 我正在传递以下内容:
String query = "UPDATE STUDENT SET RESULT = ? WHERE OBJ_ID IN ( SELECT * FROM TABLE )";
int[] stud_ids = new int[]{100,101,102};
getJdbcTemplate().query(updateStateSQL, new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
final Connection con = getJdbcTemplate().getNativeJdbcExtractor().getNativeConnection(ps.getConnection());
ps.setString(1, 'PASS');
ps.setArray(2, stud_ids);
}
}, new RowMapper<String>() {
@Override
public String mapRow(ResultSet rs, int arg1) throws SQLException {
return rs.getString(1);
}
});
}
update()
ж–№жі•иҖҢдёҚжҳҜquery()
ж–№жі•гҖӮ - CodeChimpquery()
,因为它们不会查询任何内容,也不会返回结果集。您必须使用update()
。如果出现错误,则显示错误消息和堆栈跟踪。这样更容易帮助您。另外,为什么要使用使用PreparedStatement
的更复杂的 query/update 形式呢?您有一个只有两个参数的超级简单的 SQL 更新命令,为什么不使用接受字符串和参数列表的形式?这将极大地简化您的代码。实际上,为什么不使用SimpleJdbcTemplate
? - CodeChimp