在撰寫 ADO.NET 時,有些會運到的基本物件類別,來幫助在資料庫連接時的
橋接口。
以下為一些在我們使用 ADO.NET 時的物件類別:
(資料來源參考:https://zh.wikipedia.org/wiki/ADO.NET)
ADO.NET由連線資料來源(connected data source)以及離線資料模型(disconnected data model)兩個部份構成,這兩個部份是相輔相成的。
連線資料來源便是用來連接資料庫(或是具有OLE DB資料來源提供者)的物件類別,由下列介面構成:
IDbConnection,負責與資料庫的連線管理,包含連線字串(connection string),連線的開關,資料庫交易的啟始與連線錯誤的處理,所有的ADO.NET資料提供者都要實作此介面。
Open()/Close()
:開啟與關閉資料庫連線。BeginTransaction()
:啟動資料庫交易,並回傳一個IDbTransaction
物件,以控制交易的結果
IDbCommand,負責執行資料庫指令(在大多數的案例中都是SQL指令),並傳回由資料庫中擷取的結果集,或是執行不回傳結果集的資料庫指令。
ExecuteNonQuery()
:執行不回傳結果集的資料庫指令,像是INSERT
、UPDATE
與DELETE
指令,返回值為該命令所影響的行數。 對於其他所有類型的語句,返回值 為 -1。ExecuteScalar()
:執行指令並回傳第一列第一行中的值(object類型)。當沒有資料時,ExcuteScalar方法返回System.DBNull。ExecuteReader()
:執行指令並回傳IDataReader物件,以讀取資料集中的資料。BeginExecuteNonQuery
:開始執行異步查詢EndExecuteNonQuery
: 結束執行異步查詢
IDataParameter,負責裝載資料庫指令所需要的參數資料,在使用參數化查詢時會經常使用。 對於不同的資料來源來說,預留位置不同。SQLServer資料來源用@parametername格式來命名參數,OleDb以及Odbc資料來源均用問號(?)來標識參數位置,而Oracle則以:parmname格式使用命名參數。
IDbTransaction,負責裝載資料庫交易所需的控制物件,以執行交易的認可(commit)或撤銷(rollback)的工作。
Commit()
:認可資料庫交易。Rollback()
:撤銷資料庫交易。
IDbDataAdapter,負責將來自於IDbCommand執行取得的結果集,裝載到離線型資料集(DataSet)或是離線型資料表(DataTable)中。
Fill()
:將資料填入離線型資料物件。Update()
:將變更過的離線型資料物件中的資料寫回資料庫。
IDataReader,建立一個只可向前讀取游標(forward-only)的資料讀取器工具,以逐列讀取方式存取資料,IDbDataAdapter
內部也是由它來讀取資料。
Read()
:第一次呼叫Read()方法取得第一行資料,並將游標指向下一行資料。當再次呼叫該方法時候,將讀取下一行資料。當檢測到不再有資料行時,Read()方法將返回false
。
IDataRecord,在IDataReader
讀取資料後實際裝載資料列的物件,提供方法來讀取資料行中的資料,以及轉換成.NET Framework原生型別的工具。
GetOrdinal()
:取得指定資料行的欄位索引值。IsDBNull()
:判斷指定欄位的資料是否為NULL值。
使用連線資料來源需要由開發人員自我管理連線,並且直接操作資料存取的相關細節,但它的優點是速度快,而且可以自訂整個資料存取流程的邏輯。
對每種Data Provider,ADO.NET要實作下述物件結構:
- Connection 物件提供與資料來源的連線。
- Command物件使您能夠存取用於返回資料、修改資料、執行儲存過程以及傳送或檢索參數資訊的資料庫命令。
- DataReader 物件從資料來源中提供快速的,唯讀的資料流。
- DataAdapter 物件提供連線 DataSet 物件和資料來源的橋樑。DataAdapter 使用 Command 物件在資料來源中執行 SQL 命令,以便將資料載入到 DataSet 中,並使對 DataSet 中資料的更改與資料來源保持一致。
- Parameter 物件用於參數化查詢。
- ConnectionStringBuilder:提供一種用於建立和管理由 Connection 物件使用的連線字串的內容的簡單方法。 所有 ConnectionStringBuilder 物件的基礎類別均為 DbConnectionStringBuilder 類。
- CommandBuilder :自動生成 DataAdapter 的命令內容或從儲存過程中衍生參數資訊,並填充 Command 物件的 Parameters 集合。 所有 CommandBuilder 物件的基礎類別均為 DbCommandBuilder 類。