使用 PreparedStatement 插入数据的 JdbcTemplate 更新异常

Exception with JdbcTemplate update using PreparedStatement to insert data

我正在使用 jdbcTemplate 的准备语句将一些数据写入 table。目前,我面临以下异常,我不确定自己做错了什么。

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).

我不知道我哪里弄错了

您仍在使用 JDBC - 因此请将您的语句重新编码为

String sql = "insert into table1 (columns1, columns2) values (?,?)";

你会没事的

使用 NamedParameterJdbcTemplate 作为模板。

JdbcTemplate 不支持命名参数,如 (:Name, :ID) 使用 (?,?) 占位符代替或使用 NamedParameterJdbcTemplate 或 SimpleJdbcDaoSupport 来修复错误