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

描述ADO .NET命令影響數(shù)據(jù)源說明

開發(fā) 后端
到目前為止,對存儲(chǔ)過程討論得已經(jīng)夠多了,是該看一下如何在ADO .NET命令中使用它了。在ADO .NET中調(diào)用存儲(chǔ)過程只與常規(guī)SQL語句稍微不同。

通過ADO .NET中瀏覽數(shù)據(jù)的方式并不是在ADO .NET命令中的方式,你仍需要?jiǎng)?chuàng)建鏈接,發(fā)送命令。在本文中,提到了表示直接SQL命令的類,你可以使用它們執(zhí)行存儲(chǔ)過程。

你應(yīng)當(dāng)將存儲(chǔ)過程的名字指定為SqlCommand對象的命令文本。命令文本可以通過SqlCommand的構(gòu)造函數(shù)或通過CommandText屬性指定。在下面的示例代碼中,存儲(chǔ)過程的名字是byroyalty。

為幫助SqlCommand辨認(rèn)出將執(zhí)行的命令是一個(gè)存儲(chǔ)過程,應(yīng)當(dāng)將CommandType屬性設(shè)置為特定的值。

  1. SqlCommand cmd = new SqlCommand("byroyalty", conn);  
  2. cmd.CommandType = CommandType.StoredProcedure;  
  3. SqlParameter par = new SqlParameter("@percentage", SqlDbType.Int);  
  4. par.Direction = ParameterDirection.Input;  
  5. par.Value = 15;  
  6. cmd.Parameters.Add(par);  
  7. SqlDataReader dr = cmd.ExecuteReader(); 

它是在CommandType枚舉值(即可以在ADO .NET命令中使用的所有可以得到的命令類型)中的一個(gè)值。存儲(chǔ)過程可能需要一個(gè)或多個(gè)參數(shù)才能運(yùn)行。在這種情況下,你需要使用SqlParameter類定義參數(shù)。

參數(shù)具有@前綴名,并是與SQL Server兼容的類型。另外,它還要有一個(gè)方向:輸入,輸出還是兩種都有,當(dāng)然它得是一個(gè)值。.NET 類型系統(tǒng)不同于SQL Server類型系統(tǒng),你必須求助于SqlDbType枚舉列表得到正確的類型。例如,下面的片斷對.NET32位整型求值。

一條命令在過一定時(shí)間后就會(huì)超時(shí)。如果你知道要經(jīng)過很長的操作,你就可能希望設(shè)置這種限制。象ADO中那樣,檢查的屬性是CommandTimeout,其默認(rèn)值是30秒。與ADO不同,ADO .NET使你可通過CommandBehavior枚舉指定命令的期望行為。

這樣的值指定了對結(jié)果的描述,并指定查詢?nèi)绾斡绊憯?shù)據(jù)源。在β1版本中,可以為每個(gè)命令設(shè)置CommandBehavior屬性。從β2版開始,只能使用CommandBehavior枚舉值作為ExecuteReader的參數(shù)。

對于其它選項(xiàng),你可以使用查詢命令限制獲得的關(guān)鍵字和結(jié)構(gòu)信息。在這種情況下,命令執(zhí)行時(shí)不會(huì)對選擇的行進(jìn)行鎖定。這種行為是由KeyInfo標(biāo)記設(shè)定的。作為可選項(xiàng),可能只需得到列信息,而不通過加鎖影響數(shù)據(jù)庫的狀態(tài)。這個(gè)選項(xiàng)是SchemaOnly。

另一個(gè)選項(xiàng),SingleResult,使你能夠指定只返回一個(gè)結(jié)果集,而不論命令可以得到多少個(gè)結(jié)果集。在這種情況下,命令只返回找到的***個(gè)結(jié)果集。第四個(gè)選項(xiàng)是CloseConnection,它強(qiáng)迫SqlDataReader對象與一個(gè)查詢命令聯(lián)結(jié)起來,以期望在Close方法的***一步自動(dòng)關(guān)閉鏈接。#t#

先前提到過,在ADO .NET命令中不支持服務(wù)器指針。如果需要使用服務(wù)器指針,并且負(fù)擔(dān)不起在沒有它的情況下重建應(yīng)用程序,唯一的辦法是通過ADO對象。要這樣做,需要導(dǎo)入ADODB類型庫,為不同的對象創(chuàng)建恰當(dāng)?shù)?NET封裝,然后與它們連接起來。然而,在這種情況下,你無法利用ADO .NET的優(yōu)勢。

這樣做原因很簡單。服務(wù)器指針必須與數(shù)據(jù)庫服務(wù)器的底層行為相適應(yīng)。當(dāng)處于鏈接時(shí),并不是所有的DBMS以同樣的方式工作。這樣不同特性的對數(shù)據(jù)庫不可知的實(shí)現(xiàn)已經(jīng)證明是非常困難的。為了避免出現(xiàn)更進(jìn)一步的問題,ADO .NET命令沒有為服務(wù)器指針暴露通用的類,從而從根本上消除了這種問題。

然而,用于SQL Server的管理提供者在將來的發(fā)行版中將支持服務(wù)器指針,其它類型的管理提供者也會(huì)發(fā)生同樣的事情。因此,ADO .NET對服務(wù)器指針支持的***回答是,它將提供支持,但是將通過其實(shí)現(xiàn)與底層工作方式非常匹配的類以一種嚴(yán)格的完全DBMS方式(提供支持)。

責(zé)任編輯:chenqingxiang 來源: 機(jī)械工業(yè)出版社
相關(guān)推薦

2009-12-29 14:36:55

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

2009-12-23 09:55:23

ADO.NET數(shù)據(jù)源

2009-11-03 14:56:36

ADO.NET數(shù)據(jù)源

2009-12-24 16:09:42

ADO.NET數(shù)據(jù)源

2009-12-31 14:23:33

ADO.NET數(shù)據(jù)源

2009-08-13 11:17:34

什么是ADO.NET

2010-01-04 10:39:33

ADO.NET描述

2009-09-08 11:09:39

LINQ數(shù)據(jù)源

2009-11-12 11:29:42

ADO.NET連接數(shù)據(jù)

2010-01-04 13:16:31

ADO.NET命令

2009-12-31 10:00:32

ADO.NET數(shù)據(jù)庫

2009-12-21 14:04:48

ADO.NET參數(shù)

2009-12-29 14:24:40

使用ADO.NET

2009-12-30 15:11:35

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

2009-12-18 17:01:21

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

2009-12-28 15:05:56

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

2009-12-22 16:50:44

ADO.NET元素

2009-12-22 09:43:20

ADO.NET對象

2009-12-22 13:34:48

ADO.Net Tea

2009-12-21 10:37:05

Ado.Net 實(shí)例
點(diǎn)贊
收藏

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