java.sql.SQLException:ResultSet关闭后不允许操作

时间:2011-10-05 19:58:15

标签: java jdbc sqlexception

我有这段代码:

 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    String Username2 = request.getParameter("Username2");
    String Password2 = request.getParameter("Password2");
    String ResetPassword = request.getParameter("ResetPassword");

    try {
        Class.forName("com.mysql.jdbc.Driver");
        String st = "jdbc:mysql://localhost:3306/LoginAccount";
        Connection conn = (Connection) DriverManager.getConnection(st, "root", "baljinder");
        Statement sta = (Statement) conn.createStatement();
        ResultSet rs = sta.executeQuery("SELECT * FROM Account where Username='" + Username2 + "' && Password ='" + Password2 + "' ;");

        while (rs.next()) {

            if (Username2.equals(rs.getString("Username")) && Password2.equals(rs.getString("Password"))) {
                sta.executeUpdate("update Account set Password ='" + ResetPassword + "' where Username='" + Username2 + "' ;");
                out.print("your successful to Reset the password");
                conn.close();
            } else {
                out.println("<h1>the Username and Password didn't match did not found </h1>");
            }
        }
    } catch (SQLException ex) {
        Logger.getLogger(AccountServlet.class.getName()).log(Level.SEVERE, null, ex);
        //out.print(ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(AccountServlet.class.getName()).log(Level.SEVERE, null, ex);
        out.print(ex);
    } finally {
        out.close();
    }
}

我再次得到这个&amp;再次,

  

java.sql.SQLException:ResultSet关闭后不允许操作

任何错误?

1 个答案:

答案 0 :(得分:6)

在迭代ResultSet时,您正在关闭数据库连接。 ResultSet需要将其连接打开才能工作。

您还应该确保在finally块中关闭JDBC连接。