Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
springjdbctemplate在参数2处未指定值_Spring_Spring Jdbc - Fatal编程技术网

springjdbctemplate在参数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指定值 添加条

请帮助我修复以下错误。当我尝试使用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

主键在表中自动生成,货币在我的代码中是对象,它正在保存在数据库中。请查看完整代码