對(duì)于ADO.NET 2.0 連接調(diào)試解析
ADO.NET 2.0 還是比較常用的,于是我研究了一下ADO.NET 2.0 ,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。本文向大家介紹ADO.NET 2.0 ,可能好多人還不了解ADO.NET 2.0 。
連接池是為每個(gè)唯一的連接字符串創(chuàng)建的。 當(dāng)ADO.NET 2.0 一個(gè)池后,將創(chuàng)建多個(gè)連接對(duì)象并將其添加到該池中,以滿(mǎn)足最小池大小的要求。 連接根據(jù)需要添加到池中,但是不能超過(guò)指定的最大池大小(默認(rèn)值為 100)。 連接在關(guān)閉或斷開(kāi)時(shí)釋放回池中。
在請(qǐng)求 SqlConnection 對(duì)象時(shí),ADO.NET 2.0 如果存在可用的連接,將從池中獲取該對(duì)象。 連接要可用,必須未使用,具有匹配的事務(wù)上下文或未與任何事務(wù)上下文關(guān)聯(lián),并且具有與服務(wù)器的有效鏈接。
連接池進(jìn)程通過(guò)在連接釋放回池中時(shí)重新分配連接,來(lái)滿(mǎn)足這些連接請(qǐng)求。ADO.NET 2.0 如果已達(dá)到最大池大小且不存在可用的連接,則該請(qǐng)求將會(huì)排隊(duì)。 然后,池進(jìn)程嘗試重新建立任何連接,直到到達(dá)超時(shí)時(shí)間(默認(rèn)值為 15 秒)。 如果池進(jìn)程在連接超時(shí)之前無(wú)法滿(mǎn)足請(qǐng)求,將引發(fā)異常。#t#
警告: 
我們強(qiáng)烈建議您在使用完連接后總是將其關(guān)閉,以使連接返回到池中。ADO.NET 2.0 要關(guān)閉連接,可以使用 Connection 對(duì)象的 Close 或 Dispose 方法,也可以通過(guò)在 C# 的 using 語(yǔ)句中或在 Visual Basic 的 Using 語(yǔ)句中打開(kāi)所有連接。 不是顯式關(guān)閉的連接可能不會(huì)添加或返回到池中。 
移除連接
如果連接長(zhǎng)時(shí)間空閑,或池進(jìn)程檢測(cè)到與服務(wù)器的連接已斷開(kāi),連接池進(jìn)程會(huì)將該連接從池中移除。 注意,只有在嘗試與服務(wù)器進(jìn)行通信之后才能檢測(cè)到斷開(kāi)的連接。 如果發(fā)現(xiàn)某連接不再連接到服務(wù)器,ADO.NET 2.0 則會(huì)將其標(biāo)記為無(wú)效。 無(wú)效連接只有在關(guān)閉或重新建立后,才會(huì)從連接池中移除。
如果存在與已消失的服務(wù)器的連接,那么即使連接池管理程序未檢測(cè)到已斷開(kāi)的連接并將其標(biāo)記為無(wú)效,ADO.NET 2.0 仍有可能將此連接從池中取出。 這種情況是因?yàn)闄z查連接是否仍有效的系統(tǒng)開(kāi)銷(xiāo)將造成與服務(wù)器的另一次往返,從而抵消了池進(jìn)程的優(yōu)勢(shì)。 發(fā)生此情況時(shí),初次嘗試使用該連接將檢測(cè)連接是否曾斷開(kāi),并引發(fā)異常。
ADO.NET 2.0 引入了清除池的兩種新方法: ClearAllPools 和 ClearPool。 ClearAllPools 清除給定提供程序的連接池,ClearPool 清除與特定連接關(guān)聯(lián)的連接池。 如果在調(diào)用時(shí)連接正在使用,將進(jìn)行相應(yīng)的標(biāo)記。 連接關(guān)閉時(shí),將被丟棄,而不是返回池中。















 
 
 
 
 
 
 