在Spring中更新数据列的问题

时间:2018-10-22 04:20:05

标签: spring spring-boot

我有一个名为ProgramData的数据库表。他们有一个称为Id的数据列并已执行。 id设置为自动递增。

表结构是这样的。

enter image description here

我想要的是根据ID执行列需要更新的。以下是我的代码段。

 public void saveDtvProgDataExecuted()
  {
    ProgramData programeData = new ProgramData();
    String SQL = "UPDATE program_data SET executed=1 WHERE programeData.id = ?";
    this.jdbcTemplate.update(SQL);
}

如果我运行此代码,这将给我类似错误的错误提示:错误的SQL语法[UPDATE program_data SET execute = 1 WHERE programeData.id =?];嵌套的异常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误。检查与您的MariaDB服务器版本相对应的手册,以获取在'?'附近使用的正确语法。在第1行

2 个答案:

答案 0 :(得分:1)

问题是您没有将ID值传递给jdbctemplate。

您应该使用     this.jdbctemplate.update(SQL,id); id是您要更新的记录的ID。

有关更多信息,请参阅文档: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#jdbc-updates

答案 1 :(得分:0)

在通过时尝试此语句?在您的sql查询中,需要在执行时进行设置。

 String SQL = "UPDATE program_data SET executed=1 WHERE programeData.id = ?";
   this.jdbcTemplate.update(SQL,new PreparedStatementCallback<Boolean>(){  
    @Override  
    public Boolean doInPreparedStatement(PreparedStatement ps)  
            throws SQLException, DataAccessException {  

        ps.setInt(1,"here you need to pass value of programeData.id);  
        return ps.execute();  
              }  
    });