public void closeConn(){ 
if(conn!=null) 
try { 
conn.close(); 
} catch (SQLException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 


//关闭PreparedStatement 
public void closePstmt(){ 

if(ps!=null) 
try { System.out.println("22222222222222222222222");
ps.close(); 
} catch (SQLException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 


//关闭ResultSet 
public void closeRs(){ 
if(rs!=null) 
try { 
rs.close(); 
} catch (SQLException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 


//完全释放数据库资源 
public void closeAll(){ 
this.closeRs(); 
this.closePstmt(); 
this.closeConn(); 
} ===========================问题==================在closePstmt()中为什么没执行System.out.println("22222222222222222222222");
也就是说:ps==null的,但是closeAll(){ this.closePstmt(); 改成closeAll(){ this.closePstmt(this.ps);
又无法编译。。我先问的是,就目前这样。
数据库资源是否已经释放呢。 

解决方案 »

  1.   

    public static void close(Connection conn,Statement stmt, ResultSet rs) throws Exception{
     try {
      if(rs != null) {
        rs.close();
      }
     } catch (Exception) {
      //ignore
     } finally {
       try {
         if(stmt != null) {
            stmt.close();
         }
       } catch (Exception e) {
        //ignore
       } finally {
         if(conn != null) {
           conn.close();
         }
       }
     }
    }
      

  2.   


    public void closeConn(){ 
        try { 
            if(conn!=null) {//建议楼主把代码这样改改,看起来舒服
                conn.close(); 
                conn = null;
            }
        } catch (SQLException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 

    //关闭PreparedStatement 
    public void closePstmt(){ 
        try { 
             if(ps!=null) {//同上
                  System.out.println("22222222222222222222222");
                  ps.close();
                  ps =null;
             } 
        } catch (SQLException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 

    //关闭ResultSet 
    public void closeRs(){ 
        try { 
            if(rs!=null)  {//同上
                rs.close();
                rs = null;
            } 
        } catch (SQLException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 

    //完全释放数据库资源 
    public void closeAll(){ 
        this.closeRs(); 
        this.closePstmt(); 
        this.closeConn(); 
    }  估计楼主的代码在某个位置出了问题,不然的话,不会这样的!没有代码,具体也说不清楚!楼主请仔细检查ps出现的地方,是否是程序出现了问题,或者执行了ps=null等等!