Обновите mysql в веб-приложении - PullRequest
0 голосов
/ 15 марта 2011

У меня проблема с обновлением MySQL в моем веб-приложении .. Я не могу обновить запись .

Он успешно входит в сервлет ... но он не обновляет запись ENTRY , я подозреваю, что речь шла о моем QUERY ...

это было так:

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

это действительно?

Это мой код сервлета:

открытый класс 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, совпадает ли она с переменной, которую я использовал в моем сервлете ... это было все то же самое. Так что кроме ЗАПРОСА я не знаю других вещей, которые вызывают проблему. ..

, пожалуйста, помогите .... большое спасибо заранее!

1 Ответ

1 голос
/ 15 марта 2011

Вы связываете неверную переменную с последним параметром в вашем запросе.Вы делаете stmt.setString(9, oldPassword);, и это, вероятно, должно быть stmt.setString(9, oldUsername);.

И, кстати, если memberId является первичным или уникальным ключом, то вам не нужна деталь AND username = ? в предложении WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...