Topic: 求助Statement, ResultSet 递归!!!

  Print this page

1.求助Statement, ResultSet 递归!!! Copy to clipboard
Posted by: fengshaojian
Posted on: 2008-11-08 12:41

求助:这种递归会不会造成打开的资源(conn,stmt,rs)不能关闭?

public static void deleteCategory(int id, int pid) {
    Connection conn = null;
    Statement stmtFindChild = null;
    Statement stmtDel = null;
    conn = DB.getConn();
    stmtFindChild = DB.getStmt(conn);
    stmtDel = DB.getStmt(conn);
    String sql = "delete from category where id = "+id;
    String sqlFindChild = "select * from category where pid = "+id;
    
    ResultSet rs = DB.getRs(stmtFindChild, sqlFindChild);
    try{
      while(rs.next()){
        deleteCategory(rs.getInt("id"),rs.getInt("pid"));
      }
      {
      DB.executeUpdate(stmtDel, sql);
      conn.close();
      stmtDel.close();
      stmtFindChild.close();
      rs.close();
      }
    }catch(SQLException e){
      e.printStackTrace();
    }finally{
      try{
        if(conn!=null){
        
        }
        if(stmtDel!=null){
          stmtDel.close();
        }
        if(stmtFindChild!=null){
          stmtFindChild.close();
        }
        if(rs!=null){
         rs.close();
        }    
      }catch(SQLException e){
        e.printStackTrace();
      }
    }
  }

2.Re:求助Statement, ResultSet 递归!!! [Re: fengshaojian] Copy to clipboard
Posted by: micsolaris
Posted on: 2008-11-16 23:58

deleteCategory(id,pid);
中调用了deleteCategory(id,pid);
除非是rs.next()调用本身是 false。不然你这些代码会不断循环,永远不能到达con.close()。

3.Re:求助Statement, ResultSet 递归!!! [Re: fengshaojian] Copy to clipboard
Posted by: nihaolaogao
Posted on: 2008-11-18 19:22

比如你传一个0,1
当rs.next()为真,说明条件成立.读一条记录,再调用deleteCategory(id,pid);应
该还是0,1吧.所以它是不是出来的.

4.Re:求助Statement, ResultSet 递归!!! [Re: fengshaojian] Copy to clipboard
Posted by: fengshaojian
Posted on: 2008-11-19 00:36

恩,是的,rs.next()最终是为false。

我这是个循环递归调用,所以每次递归都打开了rs,stmt等资源,
我困惑的是我打开的这稀资源最后能不能都关闭,会不会造成打开的资源不能关闭?


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923