站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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的


↑返回目录
前一篇: 求一个java方法能自动生成000到999之间的一个字符。在线等,解决立即给分。
后一篇: hibernate书籍