当前页面: 开发资料首页 → JSP 专题 → rs=null还需要rs.close()么?
rs=null还需要rs.close()么?
摘要: rs=null还需要rs.close()么?
由于条件问题,没有系统的学,请大家帮我一下。
以我理解rs=null是销毁对象对吗?
哪么在查询出来数据后直接rs=null不用rs.close()这个连接会在什么时候关闭呢?
相同的问一下stmt是不是也是这样的stmt=null就不用stmt.close()了?哪么这个又是在什么时候关闭?
bean 中:
stmt=conn.prepareStatement(sql);
rs=stmt.executeQuery();
stmt = null;
return rs;
能正常取出查询出的数据。
换成:
stmt=conn.prepareStatement(sql);
rs=stmt.executeQuery();
stmt.close();
stmt = null;
return rs;
这样就不行了。提示:
java.sql.SQLException: Invalid state, the ResultSet object is closed.
哪么是不是stmt = null;不等于stmt.close();再stmt=null;
这样理解对吗?
你加入一个stmt.close();当然出错,因为rs的使用需要STMT的支持,你中间给CLOSE肯定会出错的,
既然你在BEAN中写的,那么我的建议是写一个专门的方法去调用stmt.close();和rs.close();
我以前写的 CONN_DB.JAVA就是这样的思路,遇到的情况和你的是一模一样。
如果我在jsp中定义:
ResultSet rs=null;
然后取出查询数据(bean中是以return rs;返回查询结果):
rs=xxxx.xxx();
然后rs.close;
rs=null;
哪么bean中的rs此时的状态应该是?
我记得曾经在哪见过这个问题..
最好不要用rs=null
直接用rs.close
但是好象两者最终结果都是一样
但是好象有个效率还是什么问题..
rs=null 是因为要给一个初值 以方便以后的流程控制语句的判断吧
.close()是关闭 断开连接 这个是一定要执行的吧
我也是新手 希望没说错
rs=null
我觉得是无法进行关闭连接的操作的
因为只是将引用换了个空指针而已
并没有实际将其关闭
数据库连接依然开着
如果在正常使用下
rs=null的情况只有在无法连接数据库的时候才会发生
这个时候也就不需要关连接了
如果说成功连接了数据库
而查询没有查询出结果的时候
所返回的rs并不是直接为null的