14.2.2 ADO.NET中的類
ADO.NET中的類很多,從一次數(shù)據(jù)庫(kù)訪問過程看,一般需要4個(gè)或5個(gè)類,它們的順序如圖14-4所示。
圖14-4 數(shù)據(jù)庫(kù)訪問中類的順序
在使用這些類時(shí),除了基礎(chǔ)類DataSet外,其他類的數(shù)據(jù)提供程序要一致,如SQLConnection、SQLCommand、SQLDataReader是一致的,OLEDbConnection、OLEDbCommand、OLEDbDataAdapter是一致的。
下面我們就以O(shè)LEDB數(shù)據(jù)提供程序?yàn)槔齺碚f明這些類。
1.基礎(chǔ)類DataSet
這個(gè)類是數(shù)據(jù)在內(nèi)存中駐留時(shí)的表示形式。無論什么數(shù)據(jù)源,它在內(nèi)存中的數(shù)據(jù)表示是一致的,因此它可以連接任何數(shù)據(jù)源。DataSet數(shù)據(jù)集可以包含任意數(shù)量的數(shù)據(jù)表,以及所有表的約束、索引和關(guān)系。它沒有與數(shù)據(jù)源聯(lián)系的能力,因此在使用DataSet對(duì)象之前,必須要有一個(gè)可以建立初始化數(shù)據(jù)的對(duì)象,即DataAdapter對(duì)象。
該類的主要屬性和方法如表14-1。
表14-1 DataSet類的主要屬性和方法
類 別
名 稱
說 明
屬性
DataSetName
獲取或設(shè)置當(dāng)前DataSet的名稱
Namespace
獲取或設(shè)置DataSet的命名空間
Tables
獲取包含在DataSet中的表的集合
Prefix
獲取或設(shè)置一個(gè)XML前綴,該前綴是DataSet的命名空間的別名
方法
Clear
通過移除所有表中的所有行來清除數(shù)據(jù)
Clone
復(fù)制DataSet的結(jié)構(gòu),不復(fù)制任何數(shù)據(jù)
Copy
復(fù)制該DataSet的結(jié)構(gòu)和數(shù)據(jù)
ReadXml
將XML架構(gòu)和數(shù)據(jù)讀入DataSet
ReadXmlSchema
將XML架構(gòu)讀入DataSet
WriteXml
從DataSet寫XML數(shù)據(jù),還可以選擇寫架構(gòu)
WriteXmlSchema
寫XML架構(gòu)形式的DataSet結(jié)構(gòu)
2.OleDbDataAdapter
這個(gè)類可以建立并初始化數(shù)據(jù)集(即DataSet),與DataSet對(duì)象結(jié)合起來對(duì)數(shù)據(jù)源執(zhí)行SQL命令,提供DataSet對(duì)象所需要的存取數(shù)據(jù),可視為DataSet對(duì)象的操作核心,是DataSet對(duì)象與數(shù)據(jù)操作對(duì)象之間的溝通媒介。
該類的主要屬性和方法如表14-2所示。
表14-2 OleDbDataAdapter類的主要屬性和方法
類 別
名 稱
說 明
屬性
DeleteCommand
獲取或設(shè)置SQL語句或存儲(chǔ)過程,用于從數(shù)據(jù)集中刪除記錄
SelectCommand
獲取或設(shè)置SQL語句或存儲(chǔ)過程,用于選擇數(shù)據(jù)源中的記錄
UpdateCommand
獲取或設(shè)置SQL語句或存儲(chǔ)過程,用于更新數(shù)據(jù)源中的記錄
InsertCommand
獲取或設(shè)置SQL語句或存儲(chǔ)過程,用于將新記錄插入到數(shù)據(jù)源中
方法
Fill
在DataSet中添加或刷新行,以便與ADO Recordset或Record對(duì)象中的行相匹配
Update
為DataSet中每個(gè)已插入、已更新或已刪除的行調(diào)用相應(yīng)的INSERT、UPDATE或DELETE語句
GetFillParameters
獲取當(dāng)執(zhí)行SQL SELECT語句時(shí)由用戶設(shè)置的參數(shù)
3.OleDbDataReader
提供一個(gè)單向向前移動(dòng)且只讀的記錄集合,可以讀取由Command對(duì)象執(zhí)行命令所產(chǎn)生的數(shù)據(jù),只能與Command對(duì)象一起使用。
該類的主要屬性和方法如表14-3所示。
表14-3 OleDbDataReader類的主要屬性和方法
類 別
名 稱
說 明
屬性
Depth
獲取一個(gè)值,用于指示當(dāng)前行的嵌套深度
FieldCount
獲取當(dāng)前行中的列數(shù)
HasRows
獲取一個(gè)值,用于指示OleDbDataReader是否包含一行或多行
IsClosed
指示是否可關(guān)閉數(shù)據(jù)讀取器
Item
獲取以本機(jī)格式表示的列的值
RecordsAffected
通過執(zhí)行SQL語句獲取更改、插入或刪除的行數(shù)
方法
GetBoolean
獲取指定列的布爾值形式的值
GetChar
獲取指定列的字符形式的值
GetDateTime
獲取指定列的DateTime對(duì)象形式的值
GetDecimal
獲取指定列的Decimal對(duì)象形式的值
GetDouble
獲取指定列的雙精度浮點(diǎn)數(shù)形式的值
GetFloat
獲取指定列的單精度浮點(diǎn)數(shù)形式的值
GetGuid
獲取指定列的值作為全局唯一標(biāo)識(shí)符(GUID)
GetInt16
獲取指定列的16位有符號(hào)整數(shù)形式的值
GetInt32
獲取指定列的32位有符號(hào)整數(shù)形式的值
GetString
獲取指定列的字符串形式的值
IsDBNull
獲取一個(gè)值,該值指示列中是否包含不存在的或已丟失的值
Read
使OleDbDataReader前進(jìn)到下一條記錄
4.OleDbCommand
這個(gè)類可以操作數(shù)據(jù)源文件,對(duì)數(shù)據(jù)源下達(dá)操作數(shù)據(jù)庫(kù)的命令,即傳送SQL命令,執(zhí)行Action Query命令。
該類的主要屬性和方法如表14-4所示。
表14-4 OleDbCommand類的主要屬性和方法
類 別
名 稱
說 明
屬性
CommandText
獲取或設(shè)置要對(duì)數(shù)據(jù)源執(zhí)行的SQL語句或存儲(chǔ)過程
CommandTimeout
獲取或設(shè)置在終止對(duì)執(zhí)行命令的嘗試并生成錯(cuò)誤之前的等待時(shí)間
Connection
獲取或設(shè)置OleDbCommand的此實(shí)例使用的OleDbConnection
方法
ExecuteNonQuery
針對(duì)Connection執(zhí)行SQL 語句并返回受影響的行數(shù)
ExecuteReader
將CommandText發(fā)送到Connection并生成一個(gè) OleDbDataReader
ExecuteScalar
執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列,忽略其他列或行
ResetCommandTimeout
將CommandTimeout屬性重置為默認(rèn)值
5.OleDbConnection
該類主要負(fù)責(zé)與數(shù)據(jù)源的連接,建立程序與數(shù)據(jù)源之間的聯(lián)系,這是數(shù)據(jù)庫(kù)操作的第一步。
該類的主要屬性和方法如表14-5所示。
表14-5 OleDbCommand類的主要屬性和方法
類 別
名 稱
說 明
屬性
ConnectionString
獲取或設(shè)置用于打開數(shù)據(jù)庫(kù)的字符串
ConnectionTimeout
獲取在嘗試建立連接時(shí)終止嘗試并生成錯(cuò)誤之前所等待的時(shí)間
Database
獲取當(dāng)前數(shù)據(jù)庫(kù)或連接打開后要使用的數(shù)據(jù)庫(kù)的名稱
DataSource
獲取數(shù)據(jù)源的服務(wù)器名或文件名
Provider
獲取在連接字符串的“Provider = ”子句中指定的OLE DB提供程序的名稱
State
獲取連接的當(dāng)前狀態(tài)
方法
Close
關(guān)閉到數(shù)據(jù)源的連接
Open
使用ConnectionString所指定的屬性設(shè)置打開數(shù)據(jù)庫(kù)連接
以上是以O(shè)LEDB數(shù)據(jù)提供程序?yàn)槔齺碚f明ADO.NET中的類,其他數(shù)據(jù)提供程序中的類屬性與方法與此類似,這里就不再一一列舉。在每一種數(shù)據(jù)提供程序的類中,除了DataSet類是公用類外,其他類均需要相應(yīng)的命名空間支持,而且不可互相串用。
·上一篇:
.NET開發(fā)實(shí)戰(zhàn)之什么叫ADO.NET(圖)·下一篇:
.NET開發(fā)實(shí)戰(zhàn)之如何使用ADO.NET(3)(圖)