gpt4 book ai didi

java - 在servlet中更新sql语句而不是在servlet中

转载 作者:行者123 更新时间:2023-11-29 05:22:38 25 4
gpt4 key购买 nike

我试图让用户在输入正确的用户名后更改密码。用户名是从数据库中提取的,并与用户在表单中输入的用户名进行比较。我的问题是验证完成后 UPDATE 语句没有产生任何结果。有人可以帮帮我吗?

   String un = request.getParameter("username");
String psw = request.getParameter("password");
String cPsw = request.getParameter("cpassword");
Connection con = ConnectionHelper.getConnection();

try {
ResultSet rs = userList(con);
if (rs.next()) {

String n = rs.getString("username");

if (n.equals(un)) {
out.print("Password match");
String updateQuery = "UPDATE RegisteredUserInfo SET password ='"
+ cPsw + "'WHERE username ='" + un + "'";

PreparedStatement ps1 = con.prepareStatement(updateQuery);
ps1.executeQuery();

ServletContext context = getServletContext();
RequestDispatcher rd = context
.getRequestDispatcher("/Welcome.jsp");
rd.forward(request, response);
}
}

} catch (SQLException sx) {
out.println();
}
}

public ResultSet userList(Connection con) throws SQLException {
PreparedStatement ps;
ResultSet rs;
String matchingUname = "SELECT username FROM RegisteredUserInfo";
ps = con.prepareStatement(matchingUname);
rs = ps.executeQuery();
return rs;`

最佳答案

尝试使用 ps1.execute();ps1.executeUpdate() 而不是 ps1.executeQuery();

调用 con.commit(); 提交更改,不要最后忘记关闭资源。


检查以下方法的返回类型以确保正确插入数据。

结果集执行查询()

在此 PreparedStatement 对象中执行 SQL 查询并返回查询生成的 ResultSet 对象。

int 执行更新()

执行此PreparedStatement对象中的SQL语句,必须是SQL INSERT、UPDATE或DELETE语句;或不返回任何内容的 SQL 语句,例如 DDL 语句。

了解更多 Difference between execute, executeQuery, executeUpdate


要记住的要点

  • 使用PreparedStatement而不是使用可能导致问题的单引号查询字符串。在 Using Prepared Statements 上查找 sample
  • 不要忘记关闭连接、结果集和语句等资源。
  • 使用 finally block 来处理它或阅读更多关于 Java7 -The try-with-resources Statement 的信息
  • 不要简单地吃掉 catch block 中的异常。正确处理异常。您可以在开发时尝试使用 e.printStackTrace()

关于java - 在servlet中更新sql语句而不是在servlet中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com