JDBC传递RS的疑问

feng13555 2008-01-02 11:36:06
Connection conn=null;
Statement stmt = null;
public ResultSet query()
{
try
{
return rs;
}catch(){
......... // 其余省略

}
finally{
rs.close();
}
}

随便写个例子,错了别怪

据说这样子传RS然后在finally里会关闭不了RS,但不知道为什么,哪位懂的兄弟能帮小弟解释一下?
...全文
133 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
junny9985 2008-04-20
  • 打赏
  • 举报
回复
晕了 你要返回的结果集合被你在finally块里关闭了。
刘彬彬 2008-03-30
  • 打赏
  • 举报
回复
向一楼 大哥学习!说的真好!
toshiba_java 2008-03-29
  • 打赏
  • 举报
回复
不是很理解lz要问什么。
老紫竹讲的应该是很清楚了
代码没什么问题,rs会被关闭
但是有不合理的地方:既然query()方法返回一个rs那为何在query方法中还将其关闭呢??


finally{
rs.close();
}
这一句在你return之后运行 ,(即刚刚返回的那个resultset在finally中关闭了,因此你的query()方法可能
啥实事也没办)
feng13555 2008-01-04
  • 打赏
  • 举报
回复
哦,谢谢,意思就是说这样写不行
原因是我关了RS后传过去的RS就不能用了对吧?
e3002 2008-01-03
  • 打赏
  • 举报
回复
结果集都关闭了还取个p啊,你可以用rowset是无状态的
feng13555 2008-01-02
  • 打赏
  • 举报
回复
finally{
rs.close();
}

你给关掉了

这一句在你return之后运行

什么意思?你的意思是try里的return rs之前就执行finally了吗?
feng13555 2008-01-02
  • 打赏
  • 举报
回复
哦,谢谢楼上诸位,这个我了解
我的疑问是:有人和我讲这样子关闭不了RS或即使能关闭RS但这么传也会产生问题
我的想法是:在finally里怎么样都能关的掉,那会有什么问题呢?
(排除设计模式上的一些东西,例如RS几个类用不好这些)
老紫竹 2008-01-02
  • 打赏
  • 举报
回复
finally里面, 就是除了被 System.exit();之外,肯定会被执行到的语句,记住啦!
老紫竹 2008-01-02
  • 打赏
  • 举报
回复
finally{
rs.close();
}

你给关掉了

这一句在你return之后运行
feng13555 2008-01-02
  • 打赏
  • 举报
回复
楼上的帅哥,我放try里不行吗?
是不是finally里rs关了后传过去的rs就不行了?不是吧?
wxinb 2008-01-02
  • 打赏
  • 举报
回复
return   rs;

这句放在finally块后执行!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧