我有一个名为ProgramData的数据库表。他们有一个称为Id的数据列并已执行。 id设置为自动递增。
表结构是这样的。
我想要的是根据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行
答案 0 :(得分:1)
问题是您没有将ID值传递给jdbctemplate。
您应该使用 this.jdbctemplate.update(SQL,id); id是您要更新的记录的ID。
答案 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();
}
});