使用webservices更新mysql数据库

使用webservices更新mysql数据库,mysql,exception,model-view-controller,dao,Mysql,Exception,Model View Controller,Dao,我正在使用mysql数据库和工作台、EclipseIDE和Tomcat服务器。 我正在为web服务使用MVC模型。在HTML格式中,当我提供用户名和密码时,将显示用户的所有详细信息,当我尝试更新该用户的详细信息时,允许我更改网页上的详细信息。但是,当我提交更新的详细信息表单时,它会显示以下异常,并且数据库中的详细信息不会更新 标题1 我不知道问题出在哪里,但当我尝试首先检索数据时,它会出现任何错误。我的数据库中还有一个用户名“Sapan”。更新数据库的方法在这里 标题2 公共类CustomerD

我正在使用mysql数据库和工作台、EclipseIDE和Tomcat服务器。 我正在为web服务使用MVC模型。在HTML格式中,当我提供用户名和密码时,将显示用户的所有详细信息,当我尝试更新该用户的详细信息时,允许我更改网页上的详细信息。但是,当我提交更新的详细信息表单时,它会显示以下异常,并且数据库中的详细信息不会更新

标题1 我不知道问题出在哪里,但当我尝试首先检索数据时,它会出现任何错误。我的数据库中还有一个用户名“Sapan”。更新数据库的方法在这里

标题2 公共类CustomerDAO扩展了BaseDAO{

public boolean updateProduct(Login login){
    try {
    BaseDAO baseDAO = new BaseDAO();
    Connection c = baseDAO.getConnection();
    String query = "update test.Customer set City=? ,State=? ,PhoneNumber=? ,Email=? ,Address=? ,ZipCode=? where LoginId="+login.getLoginId();
    PreparedStatement preparedStatement = c.prepareStatement(query);
    preparedStatement.setString(1, login.getCity());
    preparedStatement.setString(2, login.getState());
    preparedStatement.setString(3, login.getCellnumber());
    preparedStatement.setString(4, login.getEmail());
    preparedStatement.setString(5, login.getAddress());
    preparedStatement.setInt(6, login.getZipcode());
    int i = preparedStatement.executeUpdate();
    if (i == 1) {
        System.out.println("Record updated successfully.");
    }
} catch(Exception e) {
    e.printStackTrace();
}
return true;
}
}

请帮我找出问题出在哪里。
提前感谢。

错误消息清楚地说明了
未知列
。并不是说没有匹配的记录。这是而不是一个会抛出完整堆栈回溯的错误。这只是一个空的结果集,是一个完全有效的结果

问题是您正在对自己执行SQL注入攻击。您可以正确地为所有字段使用占位符,实际用户名除外。由于未使用占位符,未能引用该值,因此创建了SQL语法错误:

... where LoginId="+login.getLoginId();
应该是

... where LoginId='" + login.getLoginId()  + "'";
                  ^--missing              ^^^^^^--missing in your code
... where LoginID=?

preparedStatement.setInt(7, login.getLoginID());
纠正立即出现的错误。更好的是,我们应该

... where LoginID=?

preparedStatement.setInt(7, login.getLoginID());
由代码生成的查询结果如下所示

... where LoginID=Sapan
如果没有引号,
Sapan
将被解释为字段名,该字段名不存在,因此会出现错误