0

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

HTTP 状态 500 - 请求处理失败;嵌套异常是 org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 错误的 SQL 语法 [插入 person(id, first_name, last_name, Money) 值 (?,?,?,?) ]; 嵌套异常是 java.sql.SQLException: No value specified for parameter 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);
}
4

2 回答 2

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 和任何所需参数。

金钱是你应用的对象吗?看起来它无法找到它。

于 2013-08-16T19:25:32.687 回答
0

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

该程序可能执行成功。

这是修改后的代码

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

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

顺便说一句,我也犯了同样的错误……

问候。

wb_fox

于 2017-05-22T03:50:45.883 回答