常见java中,一个有DB访问的方法,最后都有这么一段:
finally
{
resultSet.close();
statement.close();
connection.close();
}
而c#中,一个有DB访问的方法,最后都有这么一段:
finally
{
dateReader.Close;
CloseConnection(facadeContext);
}我的问题是:
不管java中的resultSet、statement,还是c#中的dateReader
都建立在connection之上的,那么我们为什么不可以用connection.close();来结束一切,
而不必去显式的关闭诸如resultSet、statement、dateReader?
很多书上提供的代码都是显式的关闭了那么多东西,
我不明白的是,连接都关闭了,而resultSet、statement、dateReader这些东西还需要显式的关闭吗?为什么?
请高手赐教!

解决方案 »

  1.   

    也许是我问的不够清楚
    我明白那是在释放资源
    我想知道:
    =========================================================
    是不是connection.close();这么一句话就可以?
    而不必再要譬如resultSet.close(); 、statement.close();或者dateReader.Close; 的操作? 
    毕竟resultSet、statement、dateReader等都是建立在connection之上。
    =========================================================
    不知道我说明白了没有?
    请看清楚我问什么,再做回答。
      

  2.   

    JDK只提供了最基础的功能,任何人都可以按照自己喜爱的方式组织他们
    这也造成了Java的白花齐放的局面。这是好事情,但对于某些人来说,就是坏事情。如果你不想这么繁琐,你应该用现成的组件,比如Hibernate, JPA
    而不是你自己操作JDBC的Connection.
    OVER。 有了选择真的好,有了如此多的选择,真的好吗??
      

  3.   

    语言不同自然也就不同,不能用同一种思维面对所有的语言
    毕竟不是一个公司的产品,设计的思路也不同
    你不喜欢
    finally 

    resultSet.close(); 
    statement.close(); 
    connection.close(); 

    因为繁琐?还是因为?
    如果你希望用
    CloseConnection();
    关闭的话
    那你可以写一个CloseConnection类
    这个类中包含了上述三个方法,你每次需要如上关闭的话
    调用CloseConnection类一次就搞定了
      

  4.   

    你嫌煩可以寫成connection。release(rs,stmt,con)
    這樣就可以少寫點
      

  5.   

    我觉得楼主的问题问的很好
    而大家的回答确充分的体现了你们的网络语言特性。总结一句 你们把csdn搞烂了
    我想楼主的意思是:
    确定一下connection.close(); 是否会随之关闭resultSet statement
    如果是这样的话就写了2句多余的代码我是看过帮助文档的 关于statement有说明,如果连接关闭statement随之关闭
    resultSet好像没看过,我现在也不怎么写java了
      

  6.   

    你关了connection那么记得每次要查询操作时候先判断下,开一次
      

  7.   

    Thank you for your help!
    本人是发帖的人,来这里做个总结。
    我发帖的目的就是想要确定一下connection.close(); 是否会随之关闭resultSet statement?
    1楼----没有仔细阅读原帖,答非所问。
    3楼----站的很高,却更是离题千里之外。
    4楼----没有仔细阅读原帖,不知所云。
    5楼----比喻在[流程]上很贴切,可以让我接受。我们知道,电子类产品断电对硬件可能造成一些不可预知的危害,只是,我想知道,针对释放资源这个话题,我们可否类似电视的直接断电来over一切,直接connection.close(); ,毕竟它带来的不同于电视断电的伤害。也请老兄深究一下,有一天故地重游,可以再做这个深入探讨。
    6楼、7楼、9楼、11楼----谢谢关注。
    8楼----没有仔细阅读原帖,作为软件开发人员,力求明白每句代码的意义,减少垃圾代码应该是基本素质之一,而非个人好恶,所谓知其然,更要所以然。
    10楼----知我者兄是也。如老兄所述,现在还有两个问题。     A-直接connection.close();是否会给DB带来类似电视断电的危害? 
         B-直接connection.close();能否随之释放resultSet?
    如果A的答案是否定的,B的答案是肯定的,那么我们代码中如下一句足以。
    finally  
    {
    connection.close();  
    }也请路过的各位高手不吝赐教,再次感谢大家,尤其rex0y老兄,谢谢。