




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ADO.NET(在連接環(huán)境中獲取數(shù)據(jù)在連接環(huán)境中獲取數(shù)據(jù))陳皓月陳皓月體驗(yàn)SQL 指定應(yīng)用程序所需要訪問的數(shù)據(jù) 返回所訪問到的數(shù)據(jù) 在同數(shù)據(jù)源之間建立連接之后,應(yīng)用程序和在同數(shù)據(jù)源之間建立連接之后,應(yīng)用程序和數(shù)據(jù)源之間的交流就包括以下兩個(gè)方面數(shù)據(jù)源之間的交流就包括以下兩個(gè)方面。SQL (續(xù))Command對(duì)象:包含要對(duì)數(shù)據(jù)庫執(zhí)行的SQL命令 DataReader對(duì)象:根據(jù)Command對(duì)象的查詢結(jié)果, 按順序獲取單行數(shù)據(jù) ADO.NET提供兩個(gè)對(duì)象提供兩個(gè)對(duì)象, 二者相互配合來實(shí)現(xiàn)二者相互配合來實(shí)現(xiàn)應(yīng)用程序和數(shù)據(jù)源之間的交流應(yīng)用程序和數(shù)據(jù)源之間的交流。 Command對(duì)象的屬性 Command
2、對(duì)象的屬性及其描述如下表所示對(duì)象的屬性及其描述如下表所示。屬性屬性描述描述CommandText要對(duì)數(shù)據(jù)源執(zhí)行的要對(duì)數(shù)據(jù)源執(zhí)行的SQL 語句或存儲(chǔ)過程語句或存儲(chǔ)過程CommandTimeout在終止執(zhí)行命令的嘗試并生成錯(cuò)誤提示信息在終止執(zhí)行命令的嘗試并生成錯(cuò)誤提示信息之前的等待時(shí)間(單位:秒)之前的等待時(shí)間(單位:秒)CommandType指示如何解釋指示如何解釋 CommandText 屬性,默認(rèn)值屬性,默認(rèn)值是是TextConnectionCommand對(duì)象所要使用的對(duì)象所要使用的ConnectionParametersParameters集合集合Transaction執(zhí)行命令所在的事務(wù)(
3、將在第執(zhí)行命令所在的事務(wù)(將在第7章中詳細(xì)闡述)章中詳細(xì)闡述)UpdatedRowSource確定當(dāng)確定當(dāng)Command對(duì)象被對(duì)象被DataAdapter或或TableAdapter的的Update()方法使用時(shí),其結(jié)方法使用時(shí),其結(jié)果如何應(yīng)用于果如何應(yīng)用于DataRowCommandType屬性(續(xù)) CommandType屬性用來指示如何解釋屬性用來指示如何解釋CommandText屬性的內(nèi)容屬性的內(nèi)容 。其取值及描述如下表所示。其取值及描述如下表所示。屬性值屬性值描述描述StoredProcedure指示指示CommandText屬性所包含的是屬性所包含的是要執(zhí)行的存儲(chǔ)過程的名稱要執(zhí)行的
4、存儲(chǔ)過程的名稱TableDirect指示指示CommandText屬性所包含的是屬性所包含的是要訪問的一個(gè)表的名稱,從此表中將要訪問的一個(gè)表的名稱,從此表中將取出所有的列和行取出所有的列和行Text指示指示CommandText屬性包含的是要屬性包含的是要執(zhí)行的執(zhí)行的SQL命令(此為默認(rèn)值)命令(此為默認(rèn)值)UpdateRowSource屬性 UpdateRowSource屬性的值及其描述如下屬性的值及其描述如下。 屬性值屬性值描述描述Both將將Command對(duì)象的輸出參數(shù)和第一個(gè)對(duì)象的輸出參數(shù)和第一個(gè)返回行都映射至已更改的行返回行都映射至已更改的行FirstReturnedRecord將第
5、一個(gè)返回行中的數(shù)據(jù)映射至已更改將第一個(gè)返回行中的數(shù)據(jù)映射至已更改的行的行None忽略所返回的任何參數(shù)或行忽略所返回的任何參數(shù)或行OutputParameters僅將僅將Command對(duì)象的輸出參數(shù)映射到對(duì)象的輸出參數(shù)映射到已更改的行已更改的行設(shè)置Command對(duì)象的屬性 (續(xù))Command對(duì)象的大多數(shù)屬性是通過簡(jiǎn)單的賦對(duì)象的大多數(shù)屬性是通過簡(jiǎn)單的賦值語句來設(shè)置的,不過值語句來設(shè)置的,不過Parameters集合是一集合是一個(gè)例外,它所使用的是個(gè)例外,它所使用的是Add()方法。在下一節(jié)方法。在下一節(jié)中將詳細(xì)討論中將詳細(xì)討論P(yáng)arameters集合集合。 代碼示例代碼示例C#代碼示例代碼示例V
6、BCommand對(duì)象的參數(shù) 要在要在Command對(duì)象中使用參數(shù),通常有以下對(duì)象中使用參數(shù),通常有以下三個(gè)步驟三個(gè)步驟。 在命令文本或存儲(chǔ)過程中指定參數(shù)在命令文本或存儲(chǔ)過程中指定參數(shù) 。1將參數(shù)添加至將參數(shù)添加至Command對(duì)象的對(duì)象的Parameters集合中集合中 。2設(shè)置參數(shù)值設(shè)置參數(shù)值 。3Command對(duì)象的參數(shù)(續(xù)) Parameters集合提供了一系列方法對(duì)集合進(jìn)行配置集合提供了一系列方法對(duì)集合進(jìn)行配置 。方法方法描述描述Add()將參數(shù)添加到集合中將參數(shù)添加到集合中Clear()從集合中移除所有參數(shù)從集合中移除所有參數(shù)Insert()將參數(shù)插入集合中的指定索引位置將參數(shù)插入集
7、合中的指定索引位置Remove()從集合中移除所指定的參數(shù)從集合中移除所指定的參數(shù)添加并配置參數(shù) 創(chuàng)建新的創(chuàng)建新的SqlParameter對(duì)象或?qū)ο蠡騉leDbParameter對(duì)象對(duì)象 。1通過編程方式將參數(shù)添加至通過編程方式將參數(shù)添加至Command對(duì)象的對(duì)象的Parameters 集合中,需遵循以下步驟集合中,需遵循以下步驟 。配置參數(shù)對(duì)象的屬性配置參數(shù)對(duì)象的屬性 。2調(diào)用調(diào)用Command對(duì)象對(duì)象Parameters 集合的集合的Add()方法,將參方法,將參數(shù)添加至數(shù)添加至Command對(duì)象的對(duì)象的Parameters 集合中。集合中。 3添加并配置參數(shù)(續(xù)) 參數(shù)對(duì)象的屬性及其描述
8、如下表所示。參數(shù)對(duì)象的屬性及其描述如下表所示。屬性屬性描述描述ParameterName將該屬性設(shè)置為將該屬性設(shè)置為SQL命令或存儲(chǔ)過程中的參數(shù)名,如命令或存儲(chǔ)過程中的參數(shù)名,如 “EmployeeID” DbType、SqlDbType或或 OleDbType將該屬性設(shè)置為參數(shù)的數(shù)據(jù)類型。將該屬性設(shè)置為參數(shù)的數(shù)據(jù)類型。 設(shè)置設(shè)置SqlParameter對(duì)象的數(shù)據(jù)類型的方法有以下兩種對(duì)象的數(shù)據(jù)類型的方法有以下兩種。在在DbType枚舉中選擇一個(gè)值賦給枚舉中選擇一個(gè)值賦給DbType屬性屬性在在SqlDbType枚舉中選擇一個(gè)值賦給枚舉中選擇一個(gè)值賦給SqlDbType屬性屬性Size設(shè)置該屬性
9、以指示參數(shù)大小,例如字符串參數(shù)中字符的個(gè)數(shù)。無需為已設(shè)置該屬性以指示參數(shù)大小,例如字符串參數(shù)中字符的個(gè)數(shù)。無需為已知且具有固定大小的數(shù)據(jù)類型(例如知且具有固定大小的數(shù)據(jù)類型(例如DbType.Int32)指定大?。┲付ù笮irection設(shè)置該屬性以指示該參數(shù)是只輸入?yún)?shù)、只輸出參數(shù)、雙向參數(shù)還是存設(shè)置該屬性以指示該參數(shù)是只輸入?yún)?shù)、只輸出參數(shù)、雙向參數(shù)還是存儲(chǔ)過程的返回值。儲(chǔ)過程的返回值。 該屬性可設(shè)置為該屬性可設(shè)置為ParameterDirection枚舉值之一:枚舉值之一:ParameterDirection.Input、ParameterDirection.InputOutput、P
10、arameterDirection.Output或或ParameterDirection.ReturnValue。默。默認(rèn)方向?yàn)檎J(rèn)方向?yàn)镻arameterDirection.InputValue對(duì)于只輸入?yún)?shù)或雙向參數(shù)而言,在運(yùn)行該命令之前需要設(shè)置對(duì)于只輸入?yún)?shù)或雙向參數(shù)而言,在運(yùn)行該命令之前需要設(shè)置Value屬屬性。性。對(duì)于只輸出參數(shù)、雙向參數(shù)和存儲(chǔ)過程的返回值而言,在運(yùn)行該命令之對(duì)于只輸出參數(shù)、雙向參數(shù)和存儲(chǔ)過程的返回值而言,在運(yùn)行該命令之后可以檢索后可以檢索Value屬性屬性設(shè)置Parameters的值 在設(shè)置好在設(shè)置好Parameters集合、執(zhí)行集合、執(zhí)行Command之前,必須為每
11、一個(gè)之前,必須為每一個(gè)Parameter設(shè)置它們的值??梢栽谠O(shè)置它們的值??梢栽凇癝qlParameter集合編輯器集合編輯器”中進(jìn)行設(shè)置中進(jìn)行設(shè)置 。使用Command對(duì)象來執(zhí)行 SQL 語句創(chuàng)建創(chuàng)建Command對(duì)象后,就可以對(duì)數(shù)據(jù)庫執(zhí)行命令對(duì)象后,就可以對(duì)數(shù)據(jù)庫執(zhí)行命令 。方法方法描述描述Cancel()取消命令的執(zhí)行取消命令的執(zhí)行CreateParameter()創(chuàng)建創(chuàng)建SqlParameter對(duì)象的新實(shí)例對(duì)象的新實(shí)例ExecuteScalar()執(zhí)行命令并返回查詢結(jié)果集中第一行的第一列。執(zhí)行命令并返回查詢結(jié)果集中第一行的第一列。忽略額外的列或行忽略額外的列或行ExecuteNonQu
12、ery()執(zhí)行命令并返回受影響的行數(shù)執(zhí)行命令并返回受影響的行數(shù)ExecuteReader()執(zhí)行命令并返回一個(gè)執(zhí)行命令并返回一個(gè)DataReader對(duì)象對(duì)象ExecuteXmlReader()執(zhí)行命令并生成一個(gè)執(zhí)行命令并生成一個(gè)XmlReader對(duì)象對(duì)象Prepare()在在 SQL Server 的實(shí)例上創(chuàng)建命令的一個(gè)準(zhǔn)備的實(shí)例上創(chuàng)建命令的一個(gè)準(zhǔn)備(預(yù)編譯)版本(預(yù)編譯)版本ResetCommandTimeout()將將CommandTimeout屬性重置為其默認(rèn)值屬性重置為其默認(rèn)值SqlCommand 和和 OleDbCommand類提供了相關(guān)的一些類提供了相關(guān)的一些方法來執(zhí)行命令,其中最
13、重要的有以下四種方法:方法來執(zhí)行命令,其中最重要的有以下四種方法: ExecuteScalar() 方法方法 ExecuteNonQuery()方法方法 ExecuteReader()方法方法 ExecuteXMLReader()方法方法 使用使用Command對(duì)象來執(zhí)行對(duì)象來執(zhí)行 SQL 語句語句 (續(xù))(續(xù)) ExecuteScalar()方法1.打開一個(gè)數(shù)據(jù)庫連接。打開一個(gè)數(shù)據(jù)庫連接。2.創(chuàng)建并初始化一個(gè)創(chuàng)建并初始化一個(gè)Command對(duì)象。對(duì)象。 3.對(duì)該對(duì)該Command對(duì)象調(diào)用對(duì)象調(diào)用ExecuteScalar()方法。方法。 4.將從將從ExecuteScalar()返回的值轉(zhuǎn)換為
14、適當(dāng)?shù)臄?shù)據(jù)返回的值轉(zhuǎn)換為適當(dāng)?shù)臄?shù)據(jù)類型。類型。 5.釋放該釋放該Command對(duì)象。對(duì)象。6.關(guān)閉該數(shù)據(jù)庫連接關(guān)閉該數(shù)據(jù)庫連接 。執(zhí)行返回標(biāo)量結(jié)果的查詢的步驟如下。執(zhí)行返回標(biāo)量結(jié)果的查詢的步驟如下。 ExecuteNonQuery ()方法的返回值是方法的返回值是SQL命令或存命令或存儲(chǔ)過程所影響的行數(shù)。儲(chǔ)過程所影響的行數(shù)。DataReader對(duì)象及ExecuteReader()方法打開一個(gè)數(shù)據(jù)庫連接。打開一個(gè)數(shù)據(jù)庫連接。 1要?jiǎng)?chuàng)建要?jiǎng)?chuàng)建DataReader對(duì)象,就需要執(zhí)行對(duì)象,就需要執(zhí)行Command類類的的ExecuteReader()方法。具體步驟如下。方法。具體步驟如下。 創(chuàng)建并初始化
15、一個(gè)創(chuàng)建并初始化一個(gè)Command對(duì)象對(duì)象 。 2對(duì)該對(duì)該Command對(duì)象調(diào)用對(duì)象調(diào)用ExecuteReader()方法方法 。 3將將ExecuteReader()方法的返回值賦給一個(gè)方法的返回值賦給一個(gè)DataReader 對(duì)象。對(duì)象。 4編寫循環(huán)語句以對(duì)該編寫循環(huán)語句以對(duì)該DataReader對(duì)象調(diào)用對(duì)象調(diào)用Read()方法,方法,并且每一次從其結(jié)果集中讀取一行并且每一次從其結(jié)果集中讀取一行 。 5每循環(huán)一次,即獲取希望在當(dāng)前行中處理的列的每循環(huán)一次,即獲取希望在當(dāng)前行中處理的列的值值 。 6DataReader對(duì)象及對(duì)象及ExecuteReader()方法(續(xù))方法(續(xù))如果查詢命令
16、返回多重結(jié)果集,則對(duì)該如果查詢命令返回多重結(jié)果集,則對(duì)該DataReader對(duì)象調(diào)用對(duì)象調(diào)用NextResult()方法方法 。 7執(zhí)行完循環(huán)之后,釋放或關(guān)閉該執(zhí)行完循環(huán)之后,釋放或關(guān)閉該DataReader對(duì)象對(duì)象 。 8釋放該釋放該Command對(duì)象對(duì)象 。 9關(guān)閉該數(shù)據(jù)庫連接關(guān)閉該數(shù)據(jù)庫連接 。 10代碼示例代碼示例C#代碼示例代碼示例VBDataReader對(duì)象及對(duì)象及ExecuteReader()方法方法(續(xù)續(xù))使用Command對(duì)象進(jìn)行異步操作 原本原本ADO.NET的的Command 對(duì)象執(zhí)行對(duì)象執(zhí)行SQL命令的命令的方法有方法有ExecuteReader()、ExecuteNo
17、nQuery()、ExecuteXmlReader ()以及以及 ExecuteScalar ()等,在等,在ADO.NET 2.0中,除了中,除了ExecuteScalar()方法外,方法外,其余的方法都新增了以其余的方法都新增了以 Begin和和End關(guān)鍵字所關(guān)鍵字所嵌入的一對(duì)方法。嵌入的一對(duì)方法。代碼示例代碼示例C#代碼示例代碼示例VB使用Command對(duì)象查詢多個(gè)活動(dòng)結(jié)果集 在默認(rèn)情況下,在通往啟用在默認(rèn)情況下,在通往啟用MARS的主機(jī)的主機(jī)(例如(例如Microsoft SQL Server 2005)的連接上)的連接上, MARS是活動(dòng)的。依賴于是活動(dòng)的。依賴于MARS技術(shù)的編碼技
18、術(shù)的編碼更為簡(jiǎn)單易讀,并且使編程人員在開發(fā)數(shù)更為簡(jiǎn)單易讀,并且使編程人員在開發(fā)數(shù)據(jù)集中的據(jù)集中的Web應(yīng)用程序時(shí)可以減少對(duì)內(nèi)存應(yīng)用程序時(shí)可以減少對(duì)內(nèi)存的使用的使用, 在一定程序上消除了性能瓶頸在一定程序上消除了性能瓶頸 。使用Command對(duì)象查詢多重活動(dòng)結(jié)果集(續(xù)) 創(chuàng)建一個(gè)如上所示的連接字符串創(chuàng)建一個(gè)如上所示的連接字符串 。1請(qǐng)遵循以下步驟來建立請(qǐng)遵循以下步驟來建立MARS 。創(chuàng)建一個(gè)創(chuàng)建一個(gè)SqlConnection對(duì)象對(duì)象, 并使用該連接字符串并使用該連接字符串對(duì)其進(jìn)行初始化對(duì)其進(jìn)行初始化 。2使用使用Open()方法打開這個(gè)方法打開這個(gè)SqlConnection對(duì)象對(duì)象 。3對(duì)于所要
19、執(zhí)行的查詢,創(chuàng)建一個(gè)新的對(duì)于所要執(zhí)行的查詢,創(chuàng)建一個(gè)新的SqlCommand對(duì)象對(duì)象 。4使用適當(dāng)?shù)拿钍褂眠m當(dāng)?shù)拿?如果想讀取該查詢結(jié)果,可以使如果想讀取該查詢結(jié)果,可以使用用ExecuteReader()方法方法)。5完成后,關(guān)閉完成后,關(guān)閉SqlConnection對(duì)象對(duì)象 。6使用Command對(duì)象查詢多重活動(dòng)結(jié)果集(續(xù)) 習(xí)題1.假設(shè)正在創(chuàng)建一個(gè)假設(shè)正在創(chuàng)建一個(gè) Windows 窗體應(yīng)窗體應(yīng)用程序。該應(yīng)用程序使用名為用程序。該應(yīng)用程序使用名為 cmd 的的 SqlCommand 對(duì)象對(duì)象, 該該 cmd 對(duì)象執(zhí)對(duì)象執(zhí)行以下存儲(chǔ)過程。行以下存儲(chǔ)過程。 CREATE PROCEDURE
20、 GetPhoneList AS BEGIN SELECT CompanyName, Phone FROM Customers SELECT CompanyName, Phone FROM Suppliers END需要將所有返回的行添加至名為需要將所有返回的行添加至名為 lstPhones 的的 ListBox 控件控件, 應(yīng)該使用代碼應(yīng)該使用代碼段段_ 。習(xí)題(續(xù))A. SqlDataReader rdr = cmd.ExecuteReader(); do while (rdr.Read() lstPhones.Items.Add(rdr.GetString(0) + t + rdr.Ge
21、tString(1); while (rdr.NextResult();B. SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read() lstPhones.Items.Add(rdr.GetString(0) + t + rdr.GetString(1); 習(xí)題(續(xù))C. SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.NextResult() while (rdr.Read() lstPhones.Items.Add(rdr.GetString(0) + t + rdr.Get
22、String(1); D. SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.NextResult() lstPhones.Items.Add(rdr.GetString(0) + t + rdr.GetString(1); 習(xí)題(續(xù))2. 請(qǐng)描述請(qǐng)描述MyCommand的的ExecuteNonQuery()、ExecuteScalar()、ExecuteReader()方法之間的方法之間的區(qū)別。區(qū)別。習(xí)題(續(xù))3. 創(chuàng)建一個(gè)顯示創(chuàng)建一個(gè)顯示 GridView 的的 Web 窗體。窗體。GridView 的數(shù)據(jù)源是名為的數(shù)據(jù)源是名為 dsOrders 的數(shù)據(jù)集。的數(shù)據(jù)集。該數(shù)據(jù)集包含名為該數(shù)據(jù)集包含名為 Orders 和和 OrderDetails 的兩個(gè)的兩個(gè)數(shù)據(jù)表。將數(shù)據(jù)表。將Orders 表的表的OrderID設(shè)置為設(shè)置為int, 將將OrderDetails表的表的OrderID設(shè)置為設(shè)置為decimal, 使用以下使用以下代碼段創(chuàng)建這兩個(gè)數(shù)據(jù)表之間的關(guān)系。(行號(hào)代碼段創(chuàng)建這兩個(gè)數(shù)據(jù)表之間的關(guān)系。(行號(hào)僅供參考僅供
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 加工定做門窗合同范例
- 2025年游藝用品及室內(nèi)游藝器材合作協(xié)議書
- 養(yǎng)生館合股協(xié)議合同范例
- 農(nóng)資采購合同范例
- 作品改編合同范例
- 企業(yè)轉(zhuǎn)正定級(jí)合同范例
- 出租餐飲旺鋪合同范例
- 公司裝修工程合同范例
- 別墅電梯出售合同范例
- 中洲控股財(cái)務(wù)風(fēng)險(xiǎn)評(píng)價(jià)研究
- 建筑垃圾處理及清運(yùn)方案
- 流浪犬收容管理服務(wù)方案
- 全國高中青年數(shù)學(xué)教師優(yōu)質(zhì)課大賽一等獎(jiǎng)《導(dǎo)數(shù)在研究函數(shù)中的應(yīng)用》課件
- 礦山巖石力學(xué)教案
- 【海馬汽車企業(yè)營(yíng)運(yùn)能力問題及解決策略(論文10000字)】
- 永安電力股份有限公司三臺(tái)縣凱河110千伏輸變電新建工程環(huán)評(píng)報(bào)告
- 口腔頜面外科基礎(chǔ)知識(shí)與基本操作-口腔頜面外科手術(shù)基本操作(口腔頜面外科課件)
- 學(xué)院(校)食堂餐飲企業(yè)承包經(jīng)營(yíng)退出管理制度
- 急危重癥護(hù)理學(xué)3
- API520-安全閥計(jì)算PART1(中文版)
- 本科畢設(shè)論文--企業(yè)vpn的接入規(guī)劃與設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論