springjdbctemplate在参数2中没有指定值

时间:2013-08-16 17:42:15

标签: spring spring-jdbc

请帮我修复以下错误。当我尝试使用jdbctemplate在spring mvc中添加新条目时,它显示错误。但是当我返回主页面时,我可以看到添加了新条目。

HTTP状态500 - 请求处理失败;嵌套异常是org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback;错误的SQL语法[insert into person(id,first_name,last_name,Money)值(?,?,?,?)];嵌套异常是java.sql.SQLException:没有为参数2指定值

添加条目的代码是。

             public void add(Person person) {
    logger.debug("Adding new person");

    // Prepare our SQL statement using Named Parameters style
    String query = "insert into person( id, first_name, last_name, Money) values (?,?,?,?) ";

    //simpleJdbcTemplate.update(query,  person.getId(), person.getFirstName(),person.getLastName(), person.getMoney());
            //"(:firstName, :lastName, :money)";

    // Assign values to parameters
    //Map<String, Object> parameters = new HashMap<String, Object>();
    //parameters.put("first_name", firstName);
    //parameters.put("last_name", lastName);
    //parameters.put("Money", money);

    // Save

    jdbcTemplate.update(query, new Object[] { String.valueOf(person.getId()),
            person.getFirstName(), person.getLastName(),person.getMoney() });




    jdbcTemplate.update(query, person);
}

2 个答案:

答案 0 :(得分:0)

暗洗

这可能是主键的问题。如何在表中定义主键是否为自动生成的键?

http://static.springsource.org/spring/docs/3.2.0.M1/api/org/springframework/jdbc/core/JdbcTemplate.html

您是否尝试使用preparedStatement? jdbcTemplate.update(PreparedStatementCreator psc) 或

jdbcTemplate.update(PreparedStatementCreator psc,KeyHolder generatedKeyHolder) ---使用PreparedStatementCreator发出更新语句,以提供SQL和任何必需的参数。

Money是您申请的对象吗? 看起来无法找到它。

答案 1 :(得分:0)

您可以将代码修改为以下内容吗?

程序可能会成功执行。

这里是修改后的代码

Object[] args = new Object[] { String.valueOf(person.getId()),
            person.getFirstName(), 
person.getLastName(),person.getMoney()};
jdbcTemplate.update(query, args);

//////////////////////////////////

顺便说一下,我也犯了同样的错误......

问候。

wb_fox