springjdbctemplate在参数2处未指定值
请帮助我修复以下错误。当我尝试使用jdbctemplate在spring mvc中添加新条目时,它显示了一个错误。但是当我返回主页时,我可以看到添加的新条目 HTTP状态500-请求处理失败;嵌套异常为org.springframework.jdbc.badsqlgramarException:PreparedStatementCallback;错误的SQL语法[插入个人(id、名字、姓氏、货币)值(?、、?、?)];嵌套异常为java.sql.SQLException:未为参数2指定值 添加条目的代码为springjdbctemplate在参数2处未指定值,spring,spring-jdbc,Spring,Spring Jdbc,请帮助我修复以下错误。当我尝试使用jdbctemplate在spring mvc中添加新条目时,它显示了一个错误。但是当我返回主页时,我可以看到添加的新条目 HTTP状态500-请求处理失败;嵌套异常为org.springframework.jdbc.badsqlgramarException:PreparedStatementCallback;错误的SQL语法[插入个人(id、名字、姓氏、货币)值(?、、?、?)];嵌套异常为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);
}
公共作废添加(个人){
logger.debug(“添加新人员”);
//使用命名参数样式准备SQL语句
String query=“插入个人(id、名字、姓氏、货币)值(?、、?、?)”;
//simpleJdbcTemplate.update(查询,person.getId(),person.getFirstName(),person.getLastName(),person.getMoney());
//“(:姓,:姓,:钱)”;
//为参数赋值
//映射参数=新的HashMap();
//参数put(“first_name”,firstName);
//参数.put(“last_name”,lastName);
//参数。看跌期权(“货币”,货币);
//拯救
jdbcTemplate.update(查询,新对象[]{String.valueOf(person.getId()),
person.getFirstName()、person.getLastName()、person.getMoney()});
jdbcTemplate.update(查询,个人);
}
Amzi
这可能是主键的问题。您是如何定义表中的主键的?它是自动生成的键吗
您是否尝试使用准备好的声明。
jdbcTemplate.update(PreparedStatementCreator psc)
或
jdbcTemplate.update(PreparedStatementCreator psc,KeyHolder generatedKeyHolder)
---使用PreparedStatementCreator发出更新语句,以提供SQL和任何必需的参数
钱是你申请的对象吗?
看起来它无法找到它。能否将代码修改为以下内容 该程序可能会成功执行 这是修改后的代码
Object[] args = new Object[] { String.valueOf(person.getId()),
person.getFirstName(),
person.getLastName(),person.getMoney()};
jdbcTemplate.update(query, args);
//////////////////////////////////
顺便说一下,我也犯了同样的错误
问候
wb_fox主键在表中自动生成,货币在我的代码中是对象,它正在保存在数据库中。请查看完整代码