解决方案 »

  1.   

    package zq.bean.cn;
    import java.sql.*;public class DB {
    private static String DBURL="jdbc:mysql://localhost:3306/bbs";
    private static String DBUSER="root";
    private static String DBPASS="123456";
    private static String DBDriver="com.mysql.jdbc.Driver";

    /*
     * 获取Connection对象
     * */
    public static Connection getConn(){
    Connection conn=null;
    try {
    Class.forName(DBDriver);
    conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    System.out.println("未找到相应的DBDriver");
    e.printStackTrace();
    } catch(SQLException e){
    e.printStackTrace();
    System.out.println("数据库连接失败,请检查URL、密码、用户名是否正确");
    }
    return conn;
    }

    /*
     * 获取Statement对象
     * */
    public static Statement getStmt(Connection conn){
    Statement stmt=null;
    if(conn!=null){
    try {
    stmt=conn.createStatement();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    System.out.println("创建Statement对象时发生异常");
    }
    }else{
    System.out.println("conn对象不存在,无法创建Statement对象");
    }
    return stmt;
    }
    /*
     * 获取PreparedStatement对象
     * */
    public static PreparedStatement getPstmt(Connection conn,String sql){
    PreparedStatement pstmt = null;
    if(conn!=null){
    try {
    pstmt = conn.prepareStatement(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    System.out.println("创建preparedStatement对象时发生异常");
    }
    }else{
    System.out.println("conn对象不存在,无法创建PreparedStatement对象");
    }
    return pstmt;
    }
    /*
     * 获取ResultSet对象
     * */
    public static ResultSet executeQuery(Statement stmt,String sql){
    ResultSet rs=null;
    try {
    rs=stmt.executeQuery(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    System.out.println("创建ResultSet对象发生异常");
    }
    return rs;
    }
    /*
     * 重载获取ResultSet对象(查询)
     * */
    public static ResultSet getRs(PreparedStatement pstmt){
    ResultSet rs=null;
    if(pstmt!=null){
    try {
    rs=pstmt.executeQuery();
    } catch (SQLException e) {
    e.printStackTrace();
    System.out.println("获取rs对象失败");
    }
    }else{
    System.out.println("pstmt流不存在");
    }
    return rs;
    }
    /*
     * 重载获取ResultSet对象(查询) Statement对象
     * */
    public static ResultSet getRs(Connection conn,String sql){
    ResultSet rs=null;
    if(conn!=null&&sql!=null){
    try {
    rs=conn.createStatement().executeQuery(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    System.out.println("创建RS对象时发生错误");
    }
    }else{
    System.out.println("conn流不存在或sql语句不存在");
    }
    return rs;
    }
    /*
     * 流的关闭相关重载
     * */
    public static void close(Connection conn){
    if(conn!=null){
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }else{
    System.out.println("你要关闭的conn流不存在");
    }
    }
    public static void close(Statement stmt){
    if(stmt!=null){
    try {
    stmt.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }else{
    System.out.println("你要关闭的stmt流不存在");
    }
    }
    public static void close(ResultSet rs){
    if(rs!=null){
    try {
    rs.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }else{
    System.out.println("你要关闭的rs流不存在");
    }
    }
    }
      

  2.   

    这样呢,先关闭stmtif(stmt!=null){
          stmt.close();
     }
    if(rs!=null){
          rs.close();
    }
    if(conn!=null){
          conn.close();
    }
      

  3.   

      这是tomcate的输出  我也找不到具体哪一行
    java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:803)
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6985)
    at org.apache.jsp.showArticleTree_jsp.tree(showArticleTree_jsp.java:38)
    at org.apache.jsp.showArticleTree_jsp.tree(showArticleTree_jsp.java:43) at org.apache.jsp.showArticleTree_jsp._jspService(showArticleTree_jsp.java:144)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
    java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:803)
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6985)
    at org.apache.jsp.showArticleTree_jsp.tree(showArticleTree_jsp.java:38)
    at org.apache.jsp.showArticleTree_jsp._jspService(showArticleTree_jsp.java:144)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
    wocao
    java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:803)
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6985)
    at org.apache.jsp.showArticleTree_jsp._jspService(showArticleTree_jsp.java:138)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
      

  4.   


    我这边的close()方法在DB。java中重载了一下。