我正在使用jdbcTemplate的prepared语句将一些数据写入表中。目前,我面临以下异常,我不确定我做错了什么。
private void insertdata(String time, String data, Datasource datasource){
String sql = "insert into table1 (columns1, columns2) values (:time, :data)";
jdbcTemplate jdbctemplate = new jdbcTemplate(datasource);
Object[] params = {time, data};
int[] types = {Types.VARCHAR, Types.VARCHAR};
try{
jdbctemplate.update(sql, params, types);
}catch(Exception e){
//some error handling
}
}
我在日志中遇到以下异常。
PreparedStatementCallback; SQL [insert into table1 (columns1, columns2) values (:time, :data)]; Parameter index out of range (1 > number of parameters, which is 0).; nested exception is java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
我不知道我在哪里弄错了。
答案 0 :(得分:0)
你仍然在引擎盖下使用JDBC - 所以将你的陈述重新编码为
String sql = "insert into table1 (columns1, columns2) values (?,?)";
你会很好或
使用NamedParameterJdbcTemplate作为模板。
答案 1 :(得分:-1)
JdbcTemplate不支持像(:Name,:ID)这样的命名参数使用(?,?)占位符,或者使用NamedParameterJdbcTemplate或SimpleJdbcDaoSupport来修复错误