<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 60,comments - 71,trackbacks - 0

        做程序離不開連接數據庫,所以一些打開,關閉數據庫是經常要執行的操作,打開數據庫后,在程序用完后要及時關閉數據庫連接資源,以釋放內存,避免資源耗盡.但現在有一個問題,即當我們關閉了Connection對象后,Statement,ResultSet對象是否會自動關閉問題,對于這個問題,之前我在網上也找了相關資料,說會自動關閉,所以一段時間以來,我都是只關閉Connection對象,而沒有關閉Statement,ResultSet對象,但程序也能正常運行,程序也沒有因為資源耗盡而崩潰,對于這一點,其實是有原因的:

        1)首先,關閉了Connection對象后,是不會自動關閉Statement,ResultSet對象的:
        
    try {
    Connection con 
    = null;
    Statement st 
    = null;
    ResultSet rs 
    = null;
    con 
    = getConnection();
    st 
    = con.createStatement();
    rs 
    = st.executeQuery(sql);
    }

    catch(Exception e) {
     System.out.println(
    "ocurr error");
    }

    finally {
              con.close();con=null;
     
    try {
        
    con.close();
     }

     
    catch(SQLException se) {
        System.out.println(
    "ocurr close error");
     }
     
    }


    System.out.println(
    "statement object:"+st);
    System.out.println(
    "resultset object:"+rs);
    上面的代碼先獲取了連接,然后只關閉了Connection對象,而沒有關閉Statement,ResultSet對象,最后兩行代碼輸出Statement,ResultSet對象,是有結果的,表明關閉了Connection對象,而沒有關閉Statement,ResultSet對象.

    2)Statement對象將由Java垃圾收集程序自動關閉,而作為一種好的編程風格,應在不需要Statement對象時顯式地關閉它們,這將立即釋放DBMS資源,有助于避免潛在的內存問題.

    3)ResultSet維護指向其當前數據行的光標.每調用一次next方法,光標向下移動一行.最初它位于第一行之前,因此第一次調用next將把光標置于第一行上,使它成為當前行.隨著每次調用next導致光標向下移動一行.按照從上至下的次序獲取ResultSet行,在ResultSet對象或其父輩Statement對象關閉之前,光標一直保持有效.

         所以在打開數據庫資源后,盡量手工關閉Connection對象和Statement,ResultSet對象,要養成一種良好的編程風格.

    注:他們三者之間關閉沒有任何關聯,即先關閉誰沒有任何先后順序,可以先關閉他們中的任何一個,且關閉其中的任何一個對象都不會關閉其他其他對象,但一般養成按關閉ResultSet,Statement,Connection的順序關閉資源.

    posted on 2008-06-06 11:02 henry1451 閱讀(6752) 評論(6)  編輯  收藏 所屬分類: Java技術

    FeedBack:
    # re: 關于關閉Connection是否會自動關閉Statement,ResultSet問題[未登錄]
    2009-03-16 12:19 | Zhang
    先關閉connection 然后再關閉ResultSet 會發生什么情況?  回復  更多評論
      
    # re: 關于關閉Connection是否會自動關閉Statement,ResultSet問題[未登錄]
    2009-05-21 13:49 |
    扯淡  回復  更多評論
      
    # re: 關于關閉Connection是否會自動關閉Statement,ResultSet問題
    2009-05-24 00:43 | Wu
    @Zhang
    先關Connection,后關Statement或ResultSet都會出錯,LZ,你那個應該只是可以打印出他們的內存地址,實際上他們已經被關閉了  回復  更多評論
      
    # re: 關于關閉Connection是否會自動關閉Statement,ResultSet問題
    2009-06-03 16:46 |
    樓上正解~~~
    并且關于Statement會自動關閉ResultSet
      回復  更多評論
      
    # re: 關于關閉Connection是否會自動關閉Statement,ResultSet問題
    2009-07-07 15:20 | wee
    原來是個菜鳥。
    你最后2句只是可以打印出他們的內存地址,實際上他們已經被關閉了。
    不信你先close connetion,再close statement, 看看會不會報錯。  回復  更多評論
      
    # re: 關于關閉Connection是否會自動關閉Statement,ResultSet問題
    2016-05-16 20:22 | 碼農C
    謝了, 很受用!  回復  更多評論
      
    主站蜘蛛池模板: 久久久久久久尹人综合网亚洲| 亚洲GV天堂无码男同在线观看| 99免费精品视频| 亚洲国产成人久久一区WWW| 亚洲aⅴ无码专区在线观看春色| 午夜性色一区二区三区免费不卡视频| 亚洲欧洲日产国码www| 麻花传媒剧在线mv免费观看| 亚洲黄色在线播放| 老司机在线免费视频| 亚洲av无码不卡久久| 成年性羞羞视频免费观看无限| 亚洲人成综合网站7777香蕉| 国产美女精品视频免费观看| 阿v视频免费在线观看| 亚洲一区二区三区在线播放| 免费91最新地址永久入口 | 中文免费观看视频网站| 亚洲1区1区3区4区产品乱码芒果| 午夜毛片不卡免费观看视频| 日本亚洲中午字幕乱码| 国产aⅴ无码专区亚洲av麻豆| 在线看片免费人成视频播| 4480yy私人影院亚洲| 最近中文字幕免费mv视频8| 美女被爆羞羞网站免费| 亚洲精品乱码久久久久久久久久久久 | 免费理论片51人人看电影| 亚洲免费日韩无码系列| 亚洲AV无码1区2区久久| 免费毛片在线看片免费丝瓜视频 | 无码人妻丰满熟妇区免费| 亚洲中字慕日产2020| 亚洲阿v天堂在线2017免费| 日韩免费视频一区二区| 亚洲国产最大av| 丝袜熟女国偷自产中文字幕亚洲| 99re视频精品全部免费| 无码一区二区三区亚洲人妻| 亚洲国产成人久久精品影视| 日本特黄a级高清免费大片|