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