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