<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        如何處理幾種常見的數據庫不當連接_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 17:31:22
        文檔

        如何處理幾種常見的數據庫不當連接_MySQL

        如何處理幾種常見的數據庫不當連接_MySQL:在基于J2EE平臺的應用開發中,大多數的應用都需要跟數據庫打交道。而自從接觸JDBC起,我們便不止一次地被告之:數據庫資源是十分寶貴的系統資源,一定要謹慎使用。但令人遺憾的是,在筆者見過的大部分跟數據庫相關的應用開發中,針對數據庫資源的使用總是充斥
        推薦度:
        導讀如何處理幾種常見的數據庫不當連接_MySQL:在基于J2EE平臺的應用開發中,大多數的應用都需要跟數據庫打交道。而自從接觸JDBC起,我們便不止一次地被告之:數據庫資源是十分寶貴的系統資源,一定要謹慎使用。但令人遺憾的是,在筆者見過的大部分跟數據庫相關的應用開發中,針對數據庫資源的使用總是充斥

        在基于J2EE平臺的應用開發中,大多數的應用都需要跟數據庫打交道。而自從接觸JDBC起,我們便不止一次地被告之:數據庫資源是十分寶貴的系統資源,一定要謹慎使用。但令人遺憾的是,在筆者見過的大部分跟數據庫相關的應用開發中,針對數據庫資源的使用總是充斥著這樣或者那樣的問題。在本文中,筆者對一些常見的錯誤或者不當的使用數據庫資源的案例進行介紹與分析,幫助讀者避免某些錯誤的發生。

        未正確關閉數據庫連接

        自增長整數型字段賦值表

        申請了數據庫連接,卻沒有及時關閉,這是最常見的數據庫連接使用方面的錯誤。犯這種錯誤的原因很多,以下是常見的一種比較低級的錯誤:

        public void foo() {Connection conn=getConnection();Statement stmt = null;try {conn=getConnection();stmt=conn.createStatement(); } catch(Exception e) { } finally {close(stmt, conn); }}


        在上述案例中的第2行代碼中,作者申請了一個Connection,但在第6行代碼中,又申請了一個新的,并且丟失了第一次申請的 Connection的引用。至此,當程序每調一次Foo方法,將導致申請一個新的Connection而沒有釋放它。因此,當數據庫達到最大連接數時,將導致整個應用的運行失敗。

        避免這種錯誤的方法有很多,譬如,可采用類似于FindBugs的代碼分析工具對應用的源碼進行分析,找出可能產生錯誤的代碼。

        此外,在應用中,我們要頻繁地對申請的數據庫連接進行關閉與釋放。此時,建議封裝成某些工具類使用,并且要盡可能安全地關閉數據庫連接。

        任意申請數據庫連接

        不考慮事務上下文,任意申請數據庫連接資源也是常見的不當用法。但這種問題往往是難以克服的,根源在于Java是一種面向對象的語言,而數據庫的事務卻是一種批量化的操作過程。我們以常見的序列號的實現方案為例:在某些應用場景中,我們需要一種自增長的整數型字段。但由于不同的數據庫有不同的實現,所以,為達到各個數據庫兼容的目的,我們常用的解決方案是,新建一張T_SEQUENCE表,它可能包含的字段有:NAME varchar(100), CURRENT_VAL number(10);其中,NAME存放序列的名稱,而CURRENT_VAL存放序列的當前值。假設某一業務對象Customer需要新增一筆記錄時,為獲得不重復且自增長的Customer ID,需要將T_SEQUENCE表中與該業務表對應的序列號加1并更新,然后將更新后的值作為Customer的ID。我們以面向對象的3種方法來實現:

        public class Customer {/更新序列號使其加1/public void sequencePlus(){Connection conn=null; Statement stmt =null; ……//將T_SEQUENCE的序列號當前值加1;}/獲取當前序列號/public int getSequenceCurrentVal(){Connection conn=null;Statement stmt=null;ResultSet rset =null;……// 獲取當前的序列號值;} /新增一條Customer記錄,自動根據序列號生成主鍵/public void addCustomer(String name) {Connection conn=null;PreparedStatement stmt = null;ResultSet rset=null;sequencePlus();// 序列號加1;int id = getSequenceCurrentVal(); // 得到當前序列號;…….// 將最新序列號作為新的T_Customer記錄的主鍵插入;} }

        針對這種應用場景,我們首先需要認識到:上述3個方法應該屬于同一個數據庫事務。否則,在并發情況下,將出現由于主鍵重復而導致數據插入失敗的情況。但同時,我們也需要看到:即便上述3個方法的執行位于同一個事務中,但3個方法使用的是不同的數據庫連接,雖然在sequencePlus方法中將 T_SEQUENCE表中的數據加1 ,但在事務并未提交的情況下,由于Connection隔離級別的原因,在getSequenceCurrentVal方法中,是看不到 sequencePlus方法中更新以后的數據的。這樣,也將導致數據插入失敗,因為主鍵勢必跟舊有ID值重復。

        因此,傳統編程方法為克服上述問題,只有在上述的方法中使用同一個Connection,才能夠保證業務數據的正確

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        如何處理幾種常見的數據庫不當連接_MySQL

        如何處理幾種常見的數據庫不當連接_MySQL:在基于J2EE平臺的應用開發中,大多數的應用都需要跟數據庫打交道。而自從接觸JDBC起,我們便不止一次地被告之:數據庫資源是十分寶貴的系統資源,一定要謹慎使用。但令人遺憾的是,在筆者見過的大部分跟數據庫相關的應用開發中,針對數據庫資源的使用總是充斥
        推薦度:
        標簽: 常用 連接 處理
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 羞羞漫画页面免费入口欢迎你| 国产成人精品日本亚洲专区6| 成年免费a级毛片| 国产禁女女网站免费看| 激情无码亚洲一区二区三区| 日本大片在线看黄a∨免费| 亚洲成av人片在www鸭子| 国产精品va无码免费麻豆| 免费观看亚洲人成网站| 亚洲性日韩精品一区二区三区| 国产精品免费αv视频| 国产AV无码专区亚洲AV毛网站| 特级无码毛片免费视频尤物| 亚洲精品成人网站在线播放| 无码人妻一区二区三区免费手机| 亚洲日本久久一区二区va| 国产成人精品免费视频大全五级 | 污视频网站免费在线观看| 亚洲AV无码成人精品区大在线| 乱爱性全过程免费视频| 亚洲国产精品热久久| 动漫黄网站免费永久在线观看| 亚洲人配人种jizz| 亚洲A∨精品一区二区三区| fc2成年免费共享视频18| 亚洲丝袜美腿视频| 午夜无遮挡羞羞漫画免费| 黄页视频在线观看免费| 亚洲精品无码久久久久去q | 亚洲最大黄色网址| 高清国语自产拍免费视频国产 | 日韩免费在线中文字幕| 亚洲精品成人片在线观看精品字幕| 99精品一区二区免费视频| 亚洲中文字幕人成乱码| 亚洲av麻豆aⅴ无码电影| 午夜不卡久久精品无码免费| 一本色道久久综合亚洲精品蜜桃冫| 亚洲精品网站在线观看不卡无广告 | a级黄色毛片免费播放视频| 亚洲欧洲日产国码二区首页 |