對于ADO.NET對象模型進行學習研究
對ADO.NET對象模型包括用于直接與數(shù)據(jù)源通信的類。本書將這樣的稱為ADO.NET的“連接”類。多數(shù)連接類表示基本的數(shù)據(jù)訪問概念,如與數(shù)據(jù)庫、查詢以及查詢結果的物理連接等。
1. ProviderFactory類
ProviderFactory類是ADO.NET 2.0中新添加的類,相當于一個對象工廠,使開發(fā)人員能夠為.NET數(shù)據(jù)提供程序創(chuàng)建其他類的實例。每個ProviderFactory類都提供一種Create方法,此方法創(chuàng)建Connections,ConnectionStringBuilders,Commands,Parameters,DataAdapters和CommandBuilders。
2. Connection類
Connection對象表示與數(shù)據(jù)源之間的連接??赏ㄟ^Connection類的各種不同屬性(property)指定數(shù)據(jù)源的類型、位置以及其他屬性(attribute)。Connection對象大致相當于ADO Connection對象或DAO Database對象,可用它來建立或斷開與數(shù)據(jù)庫的連接。Connection對象起到渠道的作用,其他對象如DataAdapter和Command對象通過它與數(shù)據(jù)庫通信,以提交查詢并獲取查詢結果。
3. ConnectionStringBuilder類ConnectionStringBuilder類是ADO.NET 2.0中新添加的類,它簡化了為.NET數(shù)據(jù)提供程序建立連接字符串的過程。每個ConnectionStringBuilder類公開一些屬性,這些屬性對應于可在.NET數(shù)據(jù)提供程序的連接字符串中使用的選項。例如,OdbcConnectionStringBuilder類公開一個Driver屬性,OleDbConnectionStringBuilder類公開一個Provider屬性。在使用ConnectionStringBuilder建立連接字符串之后,就可以利用ADO.NET對象模型的ConnectionString屬性來訪問該連接字符串。
4. Command類
Command對象的結構類似于ADO Command或DAO QueryDef對象。Command對象可表示對數(shù)據(jù)庫的查詢、對存儲過程的調用或返回特定表內容的直接請求。
數(shù)據(jù)庫支持多種不同類型的查詢。有些查詢通過引用一個或多個表、視圖或者是通過調用一個存儲過程來獲取數(shù)據(jù)行,有些查詢會對數(shù)據(jù)行進行修改,還有一些查詢通過創(chuàng)建或修改諸如表、視圖或存儲過程等對象來對數(shù)據(jù)庫的結構進行有關操作。可使用Command對象對數(shù)據(jù)庫執(zhí)行任何一種查詢操作。#t#
使用Command對象查詢數(shù)據(jù)庫相當簡單。先將Connection屬性設置為連接數(shù)據(jù)庫的ADO.NET對象模型,然后在CommandText屬性中指定查詢文本??梢蕴峁┮粋€如下所示的標準SQL查詢:SELECT CustomerID, CompanyName, ContactName, Phone FROM Customers還可以僅提供表、視圖或存儲過程的名稱,并使用Command對象的CommandType屬性來設置需要執(zhí)行的查詢類型。Command類提供了執(zhí)行查詢的不同方式。
如果此查詢不返回數(shù)據(jù)行,調用ExecuteNonQuery方法即可。Command類還有一個ExcuteReader方法,該方法返回一個DataReader對象,該對象可用來檢查由查詢所返回的數(shù)據(jù)行。如果只希望檢索該查詢所返回的第一行第一列,可以通過調用Command對象的ExecuteScalar方法來節(jié)省一些代碼行。SqlCommand包括第4個執(zhí)行方法ExecuteXmlReader,它與ExcuteReader相似,但專門用于處理以XML格式返回結果的查詢。
5ADO.NET對象模型類
DataReader用于以最快的速度檢索并檢查查詢所返回的行??墒褂肈ataReader對象來檢查查詢結果,一次檢查一行。當移向下一行時,前一行的內容就會被放棄。DataReader不支持更新操作。由DataReader返回的數(shù)據(jù)是只讀的。由于DataReader對象支持最小特性集,所以它的速度非??欤沂禽p量級的。如果曾經(jīng)用過先前數(shù)據(jù)訪問技術中的游標,那么可以將DataReader看作一種僅前向型(forward-only)只讀游標,或者流水(firehose)游標。