介紹ADO.Net數(shù)據(jù)庫調(diào)試問題
ADO.Net有很多值得學(xué)習(xí)的地方,這里我們主要介紹ADO.Net,包括介紹ADO.Net等方面。在向大家詳細介紹ADO.Net之前,首先讓大家了解下ADO.Net,然后全面介紹ADO.Net。
這也是Delphi里面我們對于一個數(shù)據(jù)庫一般只采用一個連接的原因,為了減少數(shù)據(jù)庫連接的數(shù)目來降低數(shù)據(jù)庫負擔(dān),當然COM+和MTS也提供了連接池機制,但是其連接池機制似乎不是很成熟,特別是MTS中采用系統(tǒng)的數(shù)據(jù)連接池可能會造成系統(tǒng)的死鎖,當然我們可以使用自己的連接池或者第三方的連接池來管理數(shù)據(jù)庫連接。
而在ADO.Net中這一功能是是系統(tǒng)的一部分,但是在使用中發(fā)現(xiàn)只有連接被關(guān)閉才會返回池中,如果連續(xù)的創(chuàng)建數(shù)據(jù)庫連接而已經(jīng)使用的數(shù)據(jù)庫連接沒有被返回池中這個時候,ADO.Net會真實的創(chuàng)建數(shù)據(jù)庫連接并且返回給用戶。#t#
由此可見在ADO.Net中如果不關(guān)閉連接而是不停的請求連接是一件很恐怖的事情。對于ADO.Net中的連接我的看法是盡可能早的關(guān)閉(返回系統(tǒng)連接池),這樣可以加快系統(tǒng)反應(yīng)速度而且能夠降低數(shù)據(jù)庫連接的數(shù)目。ADO的連接的關(guān)閉則是一個很有趣的事情,有的時候我們連接數(shù)據(jù)庫速度限制我們頻繁的關(guān)閉打開連接,為此我們可能需要保持一些連接以獲得速度。
ADO.Net是微軟的新一代數(shù)據(jù)訪問引擎,采用OLE DB作為數(shù)據(jù)訪問技術(shù)基礎(chǔ),采用數(shù)據(jù)集脫離的方式來訪問修改數(shù)據(jù)。ADO是微軟的上一代數(shù)據(jù)訪問引擎,同樣是基于OLE DB進行數(shù)據(jù)訪問的數(shù)據(jù)訪問引擎(也許應(yīng)該說是組件),ADO是采用COM封裝了OLE DB引擎的數(shù)據(jù)訪問組件。
對于ADO的數(shù)據(jù)訪問技術(shù)是比較成熟的。ADO 訪問數(shù)據(jù)的時候可以斷開連接也可以不斷開連接。但是對于ADO.Net而言保持連接簡直是浪費,因為其數(shù)據(jù)已經(jīng)被提到了客戶端來處理,已經(jīng)和數(shù)據(jù)庫沒有關(guān)系了。
所以在ADO.Net的數(shù)據(jù)庫系統(tǒng)中一般是當取回數(shù)據(jù)或者完成操作以后就會關(guān)閉數(shù)據(jù)庫連接(實際上也許沒有被關(guān)閉)。ADO.Net的數(shù)據(jù)庫連接的關(guān)閉是返回緩沖池中而不是一定斷開了和數(shù)據(jù)庫的連接,對于何時關(guān)閉這個連接由ADO.Net的緩沖池管理機制來決定。而ADO在使用的時候如果關(guān)閉了連接那么這個連接是真的被關(guān)閉了。