我在网络应用程序中更新 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/