第6章 ADONE數(shù)據(jù)庫訪問技術(shù)_第1頁
第6章 ADONE數(shù)據(jù)庫訪問技術(shù)_第2頁
第6章 ADONE數(shù)據(jù)庫訪問技術(shù)_第3頁
第6章 ADONE數(shù)據(jù)庫訪問技術(shù)_第4頁
第6章 ADONE數(shù)據(jù)庫訪問技術(shù)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第6章ADO.NET數(shù)據(jù)庫訪問技術(shù)6.1ADO.NET概述

ADO.NET是一組向.NET程序員公開數(shù)據(jù)訪問服務(wù)的類。ADO.NET為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了一組豐富的組件。它提供了對關(guān)系數(shù)據(jù)、XML和應(yīng)用程序數(shù)據(jù)的訪問,因此是.NETFramework中不可缺少的一部分。ADO.NET支持多種開發(fā)需求,包括創(chuàng)建由應(yīng)用程序、工具、語言或Internet瀏覽器使用的前端數(shù)據(jù)庫客戶端和中間層業(yè)務(wù)對象。一、ADO.NET結(jié)構(gòu)1、.NETFramework數(shù)據(jù)提供程序.NETFramework數(shù)據(jù)提供程序是專門為數(shù)據(jù)處理以及快速地只進、只讀訪問數(shù)據(jù)而設(shè)計的組件。包含以下對象:①Connection對象Connection對象提供與數(shù)據(jù)源的連接。②Command對象Command對象用來執(zhí)行訪問數(shù)據(jù)庫的命令,并從數(shù)據(jù)源中返回結(jié)果。③DataReader對象DataReader對象用于從數(shù)據(jù)庫中檢索只讀、只進的數(shù)據(jù)流。④DataAdapter對象DataAdapter對象提供連接DataSet對象和數(shù)據(jù)源的橋梁。DataAdapter對象使用Command對象在數(shù)據(jù)源中執(zhí)行SQL命令,以便將數(shù)據(jù)加載到DataSet中,并使對DataSet中數(shù)據(jù)的更改與數(shù)據(jù)源保持一致。⑤Transaction對象Transaction對象用于事務(wù)處理。⑥Parameter對象Parameter對象用于向Command對象傳遞命令參數(shù)。2、DataSet對象DataSet對象專門為獨立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(shè)計。它可以用于多種不同的數(shù)據(jù)源,用于XML數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DataSet包含一個或多個DataTable對象的集合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及有關(guān)DataTable對象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息組成。.NETFramework數(shù)據(jù)提供程序和DataSet對象的關(guān)系如圖6.1所示。圖6.1ADO.NET結(jié)構(gòu)①DataTable對象DataTable對象代表內(nèi)存中數(shù)據(jù)一個表,它由許多DataRow對象和DataColumn對象組成。②DataRow對象DataRow對象表示DataTable中的一行數(shù)據(jù)。③DataColumn對象DataColumn對象表示DataTable一列。二、ADO.NET相關(guān)的命名空間①System.Data.Odbc定義了基于ODBC.NETFramework數(shù)據(jù)提供程序訪問ODBC數(shù)據(jù)源的類集合。②System.Data.OleDb定義了基于OLEDB.NETFramework數(shù)據(jù)提供程序訪問OLEDB數(shù)據(jù)源的類集合。③System.Data.SqlClient定義了基于SQLServer.NETFramework數(shù)據(jù)提供程序訪問SQLServer數(shù)據(jù)源的類集合。④System.Data.OracleClient定義了基于Oracle.NETFramework數(shù)據(jù)提供程序訪問Oracle數(shù)據(jù)源的類集合。⑤System.Data.SqlTypes

為SQLServer2005中的本機數(shù)據(jù)類型提供類。這些類為.NETFramework公共語言運行庫(CLR)所提供的數(shù)據(jù)類型提供了一種更為安全和快速的替代項。6.2數(shù)據(jù)連接對象Connection一、Connection對象Connection對象代表了與數(shù)據(jù)源的連接。它代表與數(shù)據(jù)源進行的唯一會話。如果是客戶端/服務(wù)器數(shù)據(jù)庫系統(tǒng),該對象可以等價于到服務(wù)器的實際網(wǎng)絡(luò)連接。1、常用屬性①ConnectionStringConnectionString屬性用來獲取或設(shè)置用于打開數(shù)據(jù)庫的字符串。②ConnectionTimeoutConnectionTimeout屬性用來獲取在嘗試建立連接時終止嘗試,并生成錯誤之前所等待的時間。默認值為15秒。

③DataBaseDataBase屬性用來獲取當前數(shù)據(jù)庫或連接打開后要使用的數(shù)據(jù)庫的名稱。④DataSourceDataSource屬性用來獲取數(shù)據(jù)源的服務(wù)器名或文件名。⑤StateState屬性用來獲取連接的當前狀態(tài)。該屬性的取值有:Broken、Closed、Connecting、Executing、Fetching、Open。2、常用方法

①OpenOpen方法使用ConnectionString所指定的屬性設(shè)置打開數(shù)據(jù)庫連接。格式:Connection對象名.Open();②CloseClose方法用于關(guān)閉到數(shù)據(jù)庫的連接。格式:Connection對象名.Close();③ChangeDatabaseChangeDatabase方法為打開的Connection更改當前數(shù)據(jù)庫。格式:Connection對象名.ChangeDatabase(數(shù)據(jù)庫名)④CreateCommandCreateCommand方法創(chuàng)建并返回一個與該Connection對象關(guān)聯(lián)的Command對象。格式:Connection對象名.CreateCommand()⑤BeginTransaction開始數(shù)據(jù)庫事務(wù)。格式:Connection對象名.BeginTransaction()Connection對象名.BeginTransaction(事務(wù)名稱)二、創(chuàng)建Connection對象1、連接到SQLServerSqlConnection類用于聲明和創(chuàng)建連接到SQLServer數(shù)據(jù)庫的Connection對象,其構(gòu)造函數(shù)為:①SqlConnection()②SqlConnection(connectionString)其中,connectionString為string類型,是連接到服務(wù)器的字符串。例6-1連接一個SQLServer數(shù)據(jù)庫,如果連接成功,則輸出“連接成功”信息,否則輸出異常信息。2、連接到OLEDB數(shù)據(jù)源OleDbConnection類用于聲明和創(chuàng)建連接到OLEDB數(shù)據(jù)源的Connection對象,其構(gòu)造函數(shù)為:①OleDbConnection()②OleDbConnection(connectionString)其中,connectionString為string類型,是連接到OLEDB數(shù)據(jù)源的字符串。例6-2連接一個SQLServer數(shù)據(jù)庫,如果連接成功,則輸出“連接成功”信息,否則輸出異常信息。OLEDB數(shù)據(jù)源可以是任何關(guān)系數(shù)據(jù)庫,不同的關(guān)系數(shù)據(jù)庫,OLEDB提供程序不同。表6-1列舉了常用關(guān)系數(shù)據(jù)庫的OLEDB提供程序。關(guān)系數(shù)據(jù)庫OLEDB提供程序SQLServerSQLOLEDBORACLE

MSDAORAACCESSMicrosoft.Jet.OLEDB.4.0

表6-1常用的OLEDB提供程序3、連接到ODBC數(shù)據(jù)源OdbcConnection類用于聲明和創(chuàng)建連接到ODBC數(shù)據(jù)源的Connection對象,其構(gòu)造函數(shù)為:①OdbcConnection()②OdbcConnection(connectionString)其中,connectionString為string類型,是連接到ODBC數(shù)據(jù)源的字符串。例6-3連接一個SQLServer數(shù)據(jù)庫,如果連接成功,則輸出“連接成功”信息,否則輸出異常信息。ODBC數(shù)據(jù)源可以是任何關(guān)系數(shù)據(jù)庫,也可以是Excel和文本文件。不同的ODBC數(shù)據(jù)源,連接字符串不同,下面列舉出常見的ODBC數(shù)據(jù)源的連接字符串:①SQLServer數(shù)據(jù)庫

“Driver={SQLServer};Server=服務(wù)器名;Trusted_Connection=Yes;Database=數(shù)據(jù)庫名;"②Oracle數(shù)據(jù)庫"Driver={MicrosoftODBCforOracle};Server=服務(wù)器名;PersistSecurityInfo=False;Trusted_Connection=Yes"

③Access數(shù)據(jù)庫“Driver={MicrosoftAccessDriver(*.mdb)};DBQ=數(shù)據(jù)庫文件名"④Excel文件“Driver={MicrosoftExcelDriver(*.xls)};DBQ=文件名"⑤文本文件“Driver={MicrosoftTextDriver(*.txt;*.csv)};DBQ=文件路徑"⑥D(zhuǎn)SN

“DSN=數(shù)據(jù)源名”

4、連接到Oracle數(shù)據(jù)源OracleConnection類用于聲明和創(chuàng)建連接到Oracle數(shù)據(jù)源的Connection對象,其構(gòu)造函數(shù)為:①OracleConnection()②OracleConnection(connectionString)其中,connectionString為string類型,是連接到Oracle數(shù)據(jù)源的字符串。例6-4連接一個Oracle數(shù)據(jù)庫,如果連接成功,則輸出“連接成功”信息,否則輸出異常信息。三、關(guān)閉Connection對象關(guān)閉Connection對象需要調(diào)用Close或Dispose方法。6.3執(zhí)行數(shù)據(jù)庫命令對象Command一、Command對象Command對象用來執(zhí)行訪問數(shù)據(jù)庫的命令。1、常見屬性①Connection獲取或設(shè)置Command對象使用的Connection對象。②CommandTimeout獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯誤之前的等待時間。默認值為30秒。③CommandText獲取或設(shè)置要對數(shù)據(jù)源執(zhí)行的命令。該命令可以是SQL語句、存儲過程名稱或表名。④CommandType獲取或設(shè)置一個值,該值指示CommandText屬性的命令類型。該屬性的值可以是:Text、TableDirect或StoredProcedure之一。在C#中CommandType枚舉定義了CommandType的取值。⑤Parameters獲取ParameterCollection集合。參見SQL參數(shù)傳遞。⑥Transaction獲取或設(shè)置Transaction對象。參見事務(wù)處理。2、常見方法①ExecuteNonQuery對連接執(zhí)行命令并返回受影響的行數(shù)。該方法不返回結(jié)果集。即執(zhí)行命令,但不返回結(jié)果。格式:Command對象.ExecuteNonQuery()②ExecuteReader對連接執(zhí)行命令并生成一個DataReader對象。格式:Command對象.ExecuteReader()③ExecuteScalar執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列,而忽略其他行或列。二、創(chuàng)建Command對象1、利用Connection對象的CreateCommand方法創(chuàng)建例6-5向student關(guān)系表中插入一條記錄。2、利用SqlCommand類創(chuàng)建。SqlCommand類的構(gòu)造函數(shù)有:①SqlCommand()②SqlCommand(stringcmdText)③SqlCommand(stringcmdText,SqlConnectionconnection)④SqlCommand(stringcmdText,SqlConnectionconnection,SqlTransactiontransaction)例6-6統(tǒng)計student關(guān)系表中記錄數(shù)。3、利用OleDbCommand類創(chuàng)建。①OleDbCommand()②OleDbCommand(stringcmdText)③OleDbCommand(stringcmdText,OleDbConnectionconnection)④OleDbCommand(stringcmdText,OleDbConnectionconnection,OleDbTransactiontransaction)也可以利用OdbcCommand類和OracleCommand類創(chuàng)建Command對象。三、SQL參數(shù)傳遞1、Parameter對象(1)常見屬性①DbTypeDbType屬性用來獲取或設(shè)置Parameter對象的數(shù)據(jù)類型。常見取值有:BigInt、Int、TinyInt、Real、Float、Decimal、Char、Nchar、Ntext、NVarChar和DateTime等。在C#中SqlDbType枚舉、OleDbType枚舉、OdbcType枚舉和OracleType枚舉定義了DbType屬性的取值。②DirectionDirection屬性獲取或設(shè)置一個值,該值指示參數(shù)是只可輸入、只可輸出、雙向還是存儲過程返回值參數(shù)。常見取值有:Input、InputOutput、Output和ReturnValue。默認值為Input。在C#中ParameterDirection枚舉定義了Direction屬性的取值。③ParameterNameParameterName屬性用來獲取或設(shè)置SQL命令中參數(shù)的名稱。④SizeSize屬性用來獲取或設(shè)置Parameter對象的最大大小(以字節(jié)為單位)。⑤ValueValue屬性用來獲取或設(shè)置Parameter對象的值。(2)創(chuàng)建Parameter對象①利用SqlParameter類、OleDbParameter類、OdbcParameter類和OracleParameter類創(chuàng)建。②利用Command對象的CreateParameter方法創(chuàng)建。2、ParameterCollection集合ParameterCollection集合表示與Command對象相關(guān)聯(lián)的參數(shù)集合。(1)常見屬性Count返回ParameterCollection集合中Parameter對象的個數(shù)。(2)常見方法①AddAdd方法用于將Parameter對象加入到ParameterCollection集合中。其格式:ParameterCollection集合.Add(Parameter對象)②ClearClear方法用于將ParameterCollection集合中所有Parameter對象刪除。其格式:ParameterCollection集合.Clear()③RemoveRemove方法用于將ParameterCollection集合中指定的Parameter對象刪除。其格式:ParameterCollection集合.Remove(Parameter對象)例6-7執(zhí)行帶參數(shù)的存儲過程。6.4數(shù)據(jù)讀取器對象DataReader

DataReader對象能夠提供一種從數(shù)據(jù)庫讀取行的只讀、只進數(shù)據(jù)流。不能直接實例化DataReader,即實例是調(diào)用ExecuteReader()方法后從相應(yīng)數(shù)據(jù)庫的命令對象(如SqICommand)中返回的。

一、常見屬性1、FieldCountFieldCount屬性用于獲取當前行中的列數(shù)。2、HasRowsHasRows屬性用于獲取一個值,該值指示DataReader對象是否包含一行或多行。如果DataReader對象包含一行或多行,則為true;否則為false。3、IsClosedIsClosed屬性用于獲取一個值,該值指示DataReader對象是否已關(guān)閉。如果指定的DataReader對象已關(guān)閉,則為true;否則為false。二、常見方法1、CloseClose方法用來關(guān)閉DataReader對象。其格式:DataReader對象.Close();2、ReadRead方法使DataReader對象前進到下一條記錄。如果存在多個行,則返回true;否則返回false。其格式:DataReader對象.Read()例6-8對student表按學號查詢學生信息。

3、NextResult當讀取批處理SQL語句的結(jié)果時,NextResult方法使數(shù)據(jù)讀取器前進到下一個結(jié)果集。如果存在多個結(jié)果集,則返回true;否則返回false。其格式:DataReader對象.NextResult()例6-9執(zhí)行多條SQL語句。4、GetValueGetValue方法用于獲取當前記錄行指定列的值。其格式:DataReader對象.GetValue(i)其中,參數(shù)i為整型,指示列號。

5、GetValuesGetValues方法用于獲取當前行的集合中的所有屬性列。其格式為:DataReader對象.GetValues(ObjArray)其中,參數(shù)ObjArray為Object類型的數(shù)組。該方法調(diào)用后當前行的集合中的所有屬性列的值復制到ObjArray數(shù)組中,并返回屬性列數(shù)。6、IsDBNullIsDBNull方法獲取一個值,該值指示列中是否包含不存在的或已丟失的值。其格式為:DataReader對象.IsDBNull(i)其中,參數(shù)i為整型,指示列號。三、DataReader對象的聲明和創(chuàng)建DataReader對象的聲明可以利用SqlDataReader類、OleDbDataReader類、OdbcDataReader類和OracleDataReader類。利用Command對象的ExecuteReader方法創(chuàng)建DataReader對象。參見例6-9

6.5數(shù)據(jù)適配器對象DataAdapterDataAdapter對象用作DataSet對象和數(shù)據(jù)源之間的橋接器,以便檢索和保存數(shù)據(jù)。一、DataAdapter對象1、常見屬性①SelectCommandSelectCommand屬性用于獲取或設(shè)置一個執(zhí)行檢索命令的Command對象,用于在數(shù)據(jù)源中選擇記錄。②InsertCommandInsertCommand屬性用于獲取或設(shè)置一個執(zhí)行插入命令的Command對象,用于在數(shù)據(jù)源中插入記錄。③DeleteCommandDeleteCommand屬性用于獲取或設(shè)置一個執(zhí)行刪除命令的Command對象,用于在數(shù)據(jù)源中刪除記錄。④UpdateCommandUpdateCommand屬性用于獲取或設(shè)置一個執(zhí)行更新命令的Command對象,用于在數(shù)據(jù)源中更新記錄。2、常見方法①FillFill方法用于填充DataSet或DataTable。其格式:1)DataAdapter對象.Fill(ds)參數(shù)ds為DataSet類型的對象。2)DataAdapter對象.Fill(ds,srcTable)參數(shù)ds為DataSet類型的對象,srcTable為string類型,表示DataSet對象中DataTable名稱。②UpdateUpdate方法為DataSet或DataTable中每個已插入、已更新或已刪除的行調(diào)用相應(yīng)的INSERT、UPDATE或DELETE語句,以更新數(shù)據(jù)庫。其格式:1)DataAdapter對象.Update(ds)參數(shù)ds為DataSet類型的對象。2)DataAdapter對象.Update(dt)參數(shù)dt為DataTable類型的對象。二、DataAdapter對象的聲明和創(chuàng)建可以利用SqlDataAdapter類、OleDbDataAdapter類、OdbcDataAdapter類和OracleDataAdapter類聲明和創(chuàng)建DataAdapter對象。例6-10按學號從student表中查詢學生信息。例6-11對student表插入記錄。6.6數(shù)據(jù)集DataSetDataSet對象是ADO.NET結(jié)構(gòu)的主要組件,它是從數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。DataSet對象由一組DataTable對象組成。一、DataSet內(nèi)部結(jié)構(gòu)DataSet內(nèi)部結(jié)構(gòu)如圖6.2所示。二、DataSet對象的聲明和創(chuàng)建可以用DataSet類聲明和創(chuàng)建DataSet對象。DataSet類的構(gòu)造函數(shù)有:①DataSet()②DataSet(StrName)其中,參數(shù)StrName為string類型,用于指定DataSet對象名稱DataRelationCollectionDataSetExtendedPropertiesDataTableCollectionDataTableDataViewChildRelationsParentRelationsConstrainsExtendedPropertiesPrimaryKeyDataRowCollectionDataRowDataColumnCollectionDataColumnExtendedProperties圖6.2DataSet內(nèi)部結(jié)構(gòu)三、使用DataSet對象訪問數(shù)據(jù)庫使用DataSet對象訪問數(shù)據(jù)庫的步驟:①創(chuàng)建Connection對象,連接數(shù)據(jù)庫。②創(chuàng)建Command對象,設(shè)置執(zhí)行命令和命令類型。③創(chuàng)建DataAdapter對象和DataSet對象,用DataAdapter對象的Fill方法填充DataSet對象的DataTable對象。④如果命令是查詢數(shù)據(jù)庫,則輸出DataTable對象的每行每列。如果要對數(shù)據(jù)庫增、刪、改操作,則對DataTable對象做相應(yīng)的增、刪、改操作,并通過DataAdapter對象的Update方法將更新后的數(shù)據(jù)提交到數(shù)據(jù)庫中。例6-12對student表刪除記錄。四、DataSet對象和數(shù)據(jù)控件綁定具有DataBindings屬性或DataSource屬性的控件稱為數(shù)據(jù)控件,在C/S模式和B/S模式應(yīng)用程序設(shè)計中有時需要將DataSet對象和數(shù)據(jù)控件綁定,以實現(xiàn)一些簡單的用戶界面。具有DataBindings屬性的數(shù)據(jù)控件有:Label、TextBox、ComboBox、checkBox、dateTimePicker、maskedTextBox、monthCalendar、numericUpDown、pictureBox、radioButton等。具有DataSource屬性的數(shù)據(jù)控件有:listBox、DataGridView等。1、將DataSet對象和具有DataBindings屬性的數(shù)據(jù)控件綁定數(shù)據(jù)控件的DataBindings屬性是只讀的,該屬性獲取控件的數(shù)據(jù)綁定。通過該屬性將DataSet對象與數(shù)據(jù)控件綁定的格式為:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論