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 |