java - 在 Web 应用程序中更新 mysql

标签 java mysql jdbc sql-update

我在网络应用程序中更新 mysql 时遇到问题。我无法更新条目

它成功进入 servlet...但它不更新 ENTRY,我怀疑这是关于我的 QUERY...

事情是这样的:

String query = "UPDATE members SET Username = ?, Password = ?, FirstName = ?, "
            + "MiddleName = ?, LastName = ?, Address = ?, Email = ? "
            + "WHERE memberId = ? AND Username = ?";

这有效吗?

这是我的 servlet 代码:

公共(public)类 EditMember 扩展 HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    Connection con = null;
    PreparedStatement stmt = null;
    ResultSet rs = null;
    String query = "UPDATE members SET Username = ?, Password = ?, FirstName = ?, "
            + "MiddleName = ?, LastName = ?, Address = ?, Email = ? "
            + "WHERE memberId = ? AND Username = ?";

    try {
        Class.forName(Connect.DRIVER);
        con = DriverManager.getConnection(Connect.CONNECTION_STRING,
                Connect.USERNAME, Connect.PASSWORD);

        String currUserame = request.getParameter("CreateUsername");
        String currPassword = request.getParameter("CreatePassword");
        String currFirstName = request.getParameter("CurrFirstName");
        String currMiddleName = request.getParameter("currMiddleName");
        String currLastName = request.getParameter("currLastName");
        String currAddress = request.getParameter("currAddress");
        String currEmail = request.getParameter("currEmail");

        int memberId = Integer.parseInt(request.getParameter("memberId"));
        String oldPassword = request.getParameter("Password");

            stmt = con.prepareStatement(query);
            stmt.setString(1, currUserame);
            stmt.setString(2, currPassword);
            stmt.setString(3, currFirstName);
            stmt.setString(4, currMiddleName);
            stmt.setString(5, currLastName);
            stmt.setString(6, currAddress);
            stmt.setString(7, currEmail);

            stmt.setInt(8, memberId);
            stmt.setString(9, oldPassword);
            stmt.executeUpdate();

            out.println("Success");//for testing only

    } catch (Exception ex) {
        out.println("Exception");
    } finally {
        try {
            con.close();
        } catch (SQLException ex) {
            out.println("Sql Exception");
        }
        out.close();
    }
}

//HttpServlet methods were placed here

}

这是我的jsp:

<body>
    <form action="EditMember">
        <h1>Enter old Info</h1><br/>
        Enter your Id:
        <input type="text" name="memberId"><br/>
        Enter your Password:
        <input type="password" name="Password" /><br/>

        <h1>Enter New Info</h1><br/>
        User Name:
        <input type="text" name="CreateUsername" /><br/>
        Re-Enter/New Password:
        <input type="password" name="CreatePassword" /><br/>
        First Name:
        <input type="text" name="CurrFirstName"><br/>
        Middle Name:
        <input type="text" name="currMiddleName"><br/>
        Last Name:
        <input type="text" name="currLastName"><br/>
        Address:
        <input type="text" name="currAddress"><br/>
        Email Add.:
        <input type="text" name="currEmail">
        <br/>
        <input type="submit" name="Submit" id="Submit" value="Save New Info" />
    </form>
</body>

我已经检查了我在 JSP 中使用的每个变量是否与我在 servlet 中使用的变量匹配...它都是一样的..所以除了 QUERY 我不知道导致问题的其他原因。 ..

请帮忙......提前非常感谢!

最佳答案

您将错误的变量绑定(bind)到查询的最后一个参数。您正在执行 stmt.setString(9, oldPassword); ,它可能应该是 stmt.setString(9, oldUsername);

顺便说一句,如果 memberId 是主键或唯一键,那么您就不需要 WHERE 中的 AND username = ? 部分> 条款。

关于java - 在 Web 应用程序中更新 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5310754/

相关文章:

java - 为什么在android中多次调用ListView的getVIew方法

java - 读取一个文件,统计元音(字符) "aeiou"依次出现了多少次

php - Phinx迁移SQLSTATE[42S01] : Base table or view already exists:

java - 将 jdbc 连接到 openshift 上的 MySql 服务器时出现问题

java - 'where clause' 中未知的列用户名

android - 在安卓中使用jdbc

java - 对对象的 ArrayList 进行排序

java - 解析具有不同键的 JSON 对象

php - 实现 "soft"保存或修改工作流的最佳方式是什么?

java - MyBatis java 和 MySql 局部变量