2016-01-04 3 views
1

Я использую инструкцию jdbcTemplate для записи некоторых данных в таблицу. В настоящее время я столкнулся со следующим исключением, и я не уверен, что я делаю неправильно.Исключение с обновлением JdbcTemplate с использованием PreparedStatement для вставки данных

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

Почему вы не используете 'SqlMapParamSource' (,?)? – TheLostMind

ответ

0

Вы все еще используете JDBC под капотом - так перекодировать ваше заявление

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

И вы будете прекрасно или

Использование NamedParameterJdbcTemplate в качестве шаблона.

-1

JdbcTemplate не поддерживает именованные параметры, такие как (: Имя,: ID) использовать заполнители вместо или использовать NamedParameterJdbcTemplate или SimpleJdbcDaoSupport, чтобы исправить ошибку