Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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
Java spring JDBC中存在错误的Sql语法异常_Java_Mysql_Spring_Jdbc - Fatal编程技术网

Java spring JDBC中存在错误的Sql语法异常

Java spring JDBC中存在错误的Sql语法异常,java,mysql,spring,jdbc,Java,Mysql,Spring,Jdbc,这是一个控制器代码 Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [UPDATE customer SET phone=?, email=? WHERE username=?]; nested exception is java.sql.SQLException: N

这是一个控制器代码

Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [UPDATE customer SET phone=?, email=? WHERE username=?]; nested exception is java.sql.SQLException: No value specified for parameter 3
这是一个DAO实现代码

@RequestMapping(value="/editdetail", method = RequestMethod.POST)
    public ModelAndView editdetails(HttpServletRequest request, HttpServletResponse response, UserBean userBean,BindingResult result)
    {
        retrieveService.updates(userBean);
        return new ModelAndView("redirect:/welcomes");

    }

您需要传递用户名参数值

public String updates(UserBean userBean) 
    {
        String sql="UPDATE customer SET phone=?, email=? WHERE username=?";  
        jdbcTemplate.update(sql, userBean.getphone(), userBean.getemail());
        return null;
    }
String sql=“更新客户设置电话=?,电子邮件=?其中用户名=?”;
update(sql,userBean.getphone(),userBean.getemail(),);

在我看来,在调用jdbcTemplates的更新操作时,您似乎没有为“username”参数提供任何值。

jdbcTemplate.update(sql,userBean.getphone(),userBean.getemail())中,您没有为
username=?
提供参数。它应该是
jdbcTemplate.update(sql,userBean.getphone(),userBean.getemail(),userBean.getUsername())或类似的,取决于你的
UserBean
是的,它的工作原理是,但它不会更新recordsWell,这可能是另一个问题。。。这个问题已经回答了,所以请询问另一个包含数据库表和相关java代码的问题。
    String sql="UPDATE customer SET phone=?, email=? WHERE username=?";  
    jdbcTemplate.update(sql, userBean.getphone(), userBean.getemail(), <someUserNameHere>);
//in DAO class
private JdbcTemplate jdbcTemplate;
@autowired
@Qualifier(value="datasourceName")
public void setDataSource(DataSource dataSource)
{
  this.jdbcTemplate=new JdbcTemplate(dataSource)
}
public String updates(UserBean userBean) 
{
         String phone =userBean.getphone();
         String email=userBean.getemail();
         String username=userBean.getusername()
         Object[] params = { phone,email,username};
         int[] types = {Types.VARCHAR, Types.VARCHAR, Types.VARCHAR};
         private static final String sql = "UPDATE customer SET  phone=?, email=? WHERE username=?";
        int rows=jdbcTemplate.update(sql, params,types);
        return null;
 }