出现的错误是:
exception javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
org.apache.jsp.admin.deleteclass_jsp._jspService(deleteclass_jsp.java:130)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.base.BaseResultSet.validateClosedState(Unknown Source)
com.microsoft.jdbc.base.BaseResultSet.commonFetchInitialize(Unknown Source)
com.microsoft.jdbc.base.BaseResultSet.next(Unknown Source)
org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:196)
org.apache.jsp.admin.deleteclass_jsp._jspService(deleteclass_jsp.java:99)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

解决方案 »

  1.   

    while(rs.next()){
      String username=rs.getString("username");
      String sql1="select * from files where username='"+username+"'";
      ResultSet rs1=stmt.executeQuery(sql1); // 1:这时 rs 记录集已不可用。
      while(rs1.next()){
         .....
      }
      .......
    }执行1处的代码时,stmt已经被关闭并重新打开关联rs1, 此时rs不能再用了。你的代码太乱,效率也及其低下。
    哪有在循环中执行数据库操作的,还是多重循环!!
      

  2.   

    第9行改为
    Statement stmt1 = conn.createStatement();
    ResultSet rs1=stmt1.executeQuery(sql1);