摘要前幾篇文章,,我都沒有詳細(xì)講解Data Provider核心對象,因為我希望在講解這些對象之前,,讓大家對一些基礎(chǔ)的概念有很好的認(rèn)識,。在上一篇文章《你必須知道的ADO.NET(三) 連接字符串,你小覷了嗎》中,,我詳細(xì)講解了連接字符串,,相信大家都和我一樣意識到它的重要性了。如果說連接字符串是打開數(shù)據(jù)源大門的鑰匙,,那么我今天要講解的則是如何用這把鑰匙打開數(shù)據(jù)源的大門,。作為Data Provider的第一核心對象,Connection對象肩負(fù)起連接數(shù)據(jù)源的重任,。下面就讓我們好好認(rèn)識這位重量級人物吧,! 目錄
1. 理解Connection對象Connection對象,顧名思義,,表示與特定數(shù)據(jù)源的連接,。如果把數(shù)據(jù)源比作大門,那么連接字符串則是鑰匙,,而連接對象則是拿著鑰匙開門的人,。對于ADO.NET而言,不同的數(shù)據(jù)源,,都對應(yīng)著不同的Connection對象,。具體Connection對象如下表:
不管哪種連接對象,,它都繼承于DbConnection類。我們看看DbConnection類的實現(xiàn)結(jié)構(gòu): public abstract class DbConnection : Component, 從上面,,我們可以看出DbConnection是抽象基類,,并且繼承Compoent,IDbConnection,IDisposable類。由于DbConnection類是抽象基類,,因此它不能實例化,。DbConnection類封裝了很多重要的方法和屬性,下面我將詳細(xì)講解幾個重要的方法和屬性,。
2. 必須掌握的幾個方法Open: 使用 ConnectionString 所指定的設(shè)置打開數(shù)據(jù)庫連接,。 Dispose: 釋放由 Component 使用的所有資源。 Close: 關(guān)閉與數(shù)據(jù)庫的連接,。 此方法是關(guān)閉任何已打開連接的首選方法,。Close 方法回滾任何掛起的事務(wù)。 然后,,它將連接釋放到連接池,,或者在連接池被禁用的情況下關(guān)閉連接。
3. 必須掌握的幾個屬性Database: 在連接打開之后獲取當(dāng)前數(shù)據(jù)庫的名稱,,或者在連接打開之前獲取連接字符串中指定的數(shù)據(jù)庫名。 DataSource: 獲取要連接的數(shù)據(jù)庫服務(wù)器的名稱,。 ConnectionTimeOut: 獲取在建立連接時終止嘗試并生成錯誤之前所等待的時間,。 ConnectionString: 獲取或設(shè)置用于打開連接的字符串。 State: 獲取描述連接狀態(tài)的字符串,。
4. 說說ConnectionState上面我們知道,,State屬性描述了與數(shù)據(jù)源的連接的當(dāng)前狀態(tài)。ConnectionState是一個枚舉類型,。它包括以下成員: Closed: 連接處于關(guān)閉狀態(tài),。 Open: 連接處于打開狀態(tài)。 Connecting: 連接對象正在與數(shù)據(jù)源連接,。 Executing: 連接對象正在執(zhí)行命令,。 Fetching: 連接對象正在檢索數(shù)據(jù)。 Broken: 與數(shù)據(jù)源的連接中斷,。
5. 實例:連接SQL Server的SqlConnection對象上面說了那么多理論知識,,下面就講一個連接SQL Server的實例吧!代碼如下: 1 using System; 結(jié)果:
6. 編寫優(yōu)雅而又安全的代碼(1)添加try...catch塊我們知道連接數(shù)據(jù)庫時,,可能出現(xiàn)異常,,因此需要添加異常處理。對于C#來說,,典型的異常處理是添加try...catch代碼塊,。finially是可選的,。finially是指無論代碼是否出現(xiàn)異常都會執(zhí)行的代碼塊。而對數(shù)據(jù)庫連接資源來說,,是非常寶貴的,。因此,我們應(yīng)當(dāng)確保打開連接后,,無論是否出現(xiàn)異常,,都應(yīng)該關(guān)閉連接和釋放資源。所以,,我們必須在finially語句塊中調(diào)用Close方法關(guān)閉數(shù)據(jù)庫連接,。
1 SqlConnection conn = new SqlConnection(connStr);
(2)使用using語句另外一種優(yōu)雅的方法,則是使用using語句,。如果你還不熟悉using語法,,我就再啰嗦幾句。using語句的作用是確保資源使用后,,并很快釋放它們,。using語句幫助減少意外的運行時錯誤帶來的潛在問題,它整潔地包裝了資源的使用,。具體來說,,它執(zhí)行以下內(nèi)容:
因此,,上面的語句等同于: 1 using(SqlConnection conn = new SqlConnection(connStr))
|
|