请帮我修复以下错误。当我尝试使用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);
}
答案 0 :(得分:0)
暗洗
这可能是主键的问题。如何在表中定义主键是否为自动生成的键?
您是否尝试使用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