自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全面講解ADO.NET鏈接對象重要性

開發(fā) 后端
文章介紹了ADO.NET鏈接對象SqlCommand類提供了用于執(zhí)行命令的四個方法:ExecuteReader, ExecuteNonQuery, ExecuteScalar。

鏈接是一種很重要的資源,可以讓我們把不相關(guān)的東西鏈接起來,在ADO .NET提供了一種 ADO.NET鏈接對象。不論何時客戶端需要一個鏈接,返回的是鏈接池中的對象。一旦鏈接關(guān)閉,對象不是留給碎片收集器,而是釋放到池中,供其它調(diào)用者使用?! ℃溄映夭皇怯葾DO .NET直接管理。SQL Server鏈接依靠Windows? 2000服務(wù)組件地pooling服務(wù)。每個鏈接池通過確切的匹配法則與不同的鏈接字符串相關(guān)。一旦創(chuàng)建,SQL Server鏈接池至到活動過程終止,它才會終結(jié)。

#T#相反,OLE DB鏈接被很小心的集中在OLE DB提供者會話對象的內(nèi)部實現(xiàn)中。會話集中和自動收集是通過OLE DB服務(wù)完成,并通過注冊設(shè)置在每一個提供者基礎(chǔ)上被激活。因此,自動鏈接池并不會發(fā)生在所有OLE DB 提供者上,所有設(shè)備上。關(guān)于ADO.NET鏈接對象,最后要指出的是,鏈接類是不可繼承的。你不能從SqlConnection 或 OleDbConnection中創(chuàng)建一個新類。這樣做是出于代碼安全方面的考慮。然而,你可以創(chuàng)建你自己的類,在類中包含一個或多個ADO.NET鏈接對象。使用直接命令在向數(shù)據(jù)提供者發(fā)送命令前,要確保鏈接已經(jīng)打開。默認(rèn)鏈接是關(guān)閉的。然后,執(zhí)行命令,只要有可能就關(guān)閉鏈接以確保其他客戶能得到重要資源。

SqlCommand類提供了用于執(zhí)行命令的四個方法。它們是:ExecuteReader, ExecuteNonQuery, ExecuteScalar,及最新的但不是最小的,ExecuteXmlReader.從本質(zhì)上講,這些方法在期望的輸入上不同,返回的結(jié)果不同而已。通常,在操作完成后,需要確定使用的方法而不是繼續(xù)向前。順便指出,OleDbCommand 對象不支持ExecuteXmlReader.ExecuteReader用于執(zhí)行選擇記錄的查詢命令或存儲過程。它返回一個或多個結(jié)果集。

  1. cmd.Connection.Open();  
  2. SqlDataReader dr = cmd.ExecuteReader();  
  3. // 處理結(jié)果集  
  4. cmd.Connection.Close(); 

你可以通過SqlDataReader對象訪問選擇的記錄,使用Read方法在記錄間循環(huán)。使用NextResults方法移動到下一結(jié)果集。ExecuteNonQuery用于執(zhí)行命令或存儲過程,它影響特定表的狀態(tài)。這只意味著一個查詢命令。通常使用此方法執(zhí)行INSERT, UPDATE, DELETE, CREATE, SET語句。ExecuteNonQuery只返回命令所影響到的行數(shù),如果得不到信息則返回-1.它并不能使你訪問語句或存儲過程生成的結(jié)果集。實際上,無法阻止你用此方法執(zhí)行一條查詢命令,但在這種情況下,你既得不到結(jié)果集也得不到被影響的行數(shù)。

  1. cmd.Connection.Open();  
  2. nRecsAffected = cmd.ExecuteNonQuery();  
  3. cmd.Connection.Close();  
  4. //此處檢查影響到的記錄 

通過SqlCommand對象的RecordsAffected屬性可以得到影響到的行數(shù)。如果發(fā)生錯誤或如果執(zhí)行的昌查詢命令,此屬性值為-1.ExecuteScalar期望執(zhí)行查詢命令,或更可能是一個存儲過程,它返回數(shù)據(jù)。然而,此方法與ExecuteReader方法不同,它只將得到的結(jié)果集中的第一行第一列的值作為標(biāo)量值返回。

  1. cmd.Connection.Open();  
  2. Object o = cmd.ExecuteScalar();  
  3. cmd.Connection.Close();  
  4. // work on the scalar here 

此方法將值作為一個封裝對象返回。然后由你來解包或?qū)⒋酥翟煨蜑檎_的期望類。如果需要對數(shù)據(jù)執(zhí)行具有統(tǒng)計或集合性質(zhì)的操作,ExecuteScalar方法將特別有用。在這些或相似的情況下,你可能只希望返回給調(diào)用者一個值。由于它的使用場合,你或多或少的對存儲過程而不是單個SQL語句使用此方法。ExecuteXmlReader方法在SELECT命令執(zhí)行后,構(gòu)建并返回一個XmlReader對象,它利用了存在于SQL Server 2000中的XML特性。

責(zé)任編輯:田樹 來源: 博客
相關(guān)推薦

2009-12-25 10:17:27

2009-11-03 15:24:14

ADO.NET對象模型

2009-11-04 09:52:10

ADO.NET Sql

2009-11-11 09:48:08

ADO.NET Com

2009-11-12 14:37:26

ADO.NET結(jié)構(gòu)

2009-11-12 09:44:41

ADO.NET對象

2009-11-12 16:14:28

ADO.NET自定義對

2009-12-24 09:34:47

調(diào)用ADO.NET

2009-10-29 13:34:01

ADO.NET對象

2009-11-04 08:38:30

ADO.NET庫文件

2009-11-04 12:45:33

ADO.NET Dat

2009-11-04 13:20:28

ADO.NET Dat

2009-10-29 11:08:20

ADO.NET Dat

2009-10-29 10:10:10

ADO.NET數(shù)據(jù)集類

2009-11-12 16:04:42

ADO.NET對象查詢

2009-11-04 11:30:35

ADO.NET Dat

2009-12-28 13:47:31

ADO.NET對象

2009-12-18 14:27:24

ADO.NET對象

2009-12-31 14:46:29

ADO.NET Ent

2009-10-29 08:51:24

ADO.NET結(jié)構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號