[摘要] ADO.NET是微軟公司推出的.NET Framework中用以操作數(shù)據(jù)庫的核心組件,是一種全新的數(shù)據(jù)庫訪問機制。本文介紹了ADO.NET數(shù)據(jù)庫訪問技術,分析了ADO.NET中的各種對象及常用屬性和方法。通過具體實例,介紹了ASP.NET環(huán)境下利用ADO.NET訪問Web數(shù)據(jù)庫的技術,并給出了部分的實現(xiàn)代碼。
[關鍵詞] ADO.NET 數(shù)據(jù)對象 Web應用
一、ADO.NET 概述
ADO.NET是微軟公司推出的。NET Framework中用以操作數(shù)據(jù)庫的核心組件。是一種全新的數(shù)據(jù)庫訪問機制。相對于ADO,它的最大優(yōu)勢就是支持離線訪問,即對于數(shù)據(jù)的更新修改可以在與數(shù)據(jù)源完全斷開連接的情況下進行,然后再把數(shù)據(jù)更新情況傳回到數(shù)據(jù)源。這樣大大減少了連接過多對于數(shù)據(jù)庫服務器資源的占用。這對訪問Web數(shù)據(jù)庫是非常重要的。另外,ADO.NET中內(nèi)存數(shù)據(jù)和傳輸數(shù)據(jù)都以XML格式表示,XML是一種存儲和傳輸數(shù)據(jù)的行業(yè)標準格式,可以被多種操作數(shù)據(jù)接口所接受,能穿透公司防火墻,因此,ADO.NET具有跨平臺性和良好的交互性。
二、ADO.NET對象模型
ADO.NET有兩個核心組件構成,. NET Framework數(shù)據(jù)提供程序和DataSet對象,而. NET Framework數(shù)據(jù)提供程序包括Connection、Command、DataReader和DataAdapter對象。下面分別介紹這五個對象。
1.Connection對象:數(shù)據(jù)庫應用程序與數(shù)據(jù)庫進行交互首先必須建立與數(shù)據(jù)庫的連接,在ADO.NET中可以使用Connection對象來建立與數(shù)據(jù)庫的連接。在建立連接時,要提供一些信息,如數(shù)據(jù)庫所在位置、數(shù)據(jù)庫名稱、用戶賬號、密碼等。
Connection對象的常用屬性有ConnectionString屬性,該屬性用來設置連接字符串,即指定要連接的數(shù)據(jù)庫。
2.Command對象:對數(shù)據(jù)庫執(zhí)行命令操作,如進行數(shù)據(jù)的查詢、修改、添加、刪除等,可使用Command 對象。Command對象的常用屬性有:
(1)CommandType 屬性:用來設置Command 對象要執(zhí)行的命令類型,即SQL 語句、數(shù)據(jù)表名稱和存儲過程中的一種。
(2)CommandText 屬性:用來設置要對數(shù)據(jù)庫執(zhí)行的SQL 語句、數(shù)據(jù)表名稱或存儲過程名。
(3)Connection 屬性:用來設置要通過哪個Connection對象執(zhí)行命令。
3.DataAdapter對象:DataAdapter對象承擔著數(shù)據(jù)源和DataSet對象之間的數(shù)據(jù)交互任務,它可以選擇數(shù)據(jù)源中的數(shù)據(jù)填充到DataSet對象,也可以當DataSet對象中發(fā)生改變時來更新數(shù)據(jù)源以反映這種變化。Dataadapter對象的常用屬性有:
(1)Selectcommand 屬性:用于選擇數(shù)據(jù)源中的記錄。
(2)Insertcommand 屬性:用于往數(shù)據(jù)源中添加新記錄。
(3)Updatacommand 屬性:用于更新數(shù)據(jù)源中的記錄。
(4)Deletecommand 屬性:用于從數(shù)據(jù)源中刪除記錄。
Dataadapter 常用方法:Fill 方法:其主要作用是從數(shù)據(jù)源中選擇數(shù)據(jù)以填充數(shù)據(jù)集;Updata方法:在對數(shù)據(jù)集完成增加、刪除或修改工作后,再調(diào)用Updata方法更新數(shù)據(jù)源。
4.DataReader 對象:該對象用于從數(shù)據(jù)庫中讀取由SELECT命令返回的、僅向前的只讀數(shù)據(jù)流,而且當前內(nèi)存中每次只存一條記錄。DataReader 適用于只需返回一個簡單的只讀記錄集的情況。
DataReader 對象常用方法為Read,用于從查詢結果中獲取記錄行。
5.DataSet對象:DateSet(數(shù)據(jù)集)對象正是實現(xiàn)離線訪問技術的核心。DataSet不依賴于數(shù)據(jù)源(如數(shù)據(jù)庫) 而獨立存在于內(nèi)存中,可以把DataSet想象成內(nèi)存中的數(shù)據(jù)庫,DateSet對象中數(shù)據(jù)采用XML格式表示,借助XML 可以描述具有復雜關系的數(shù)據(jù), 這使得采用DataSet對象能夠容納相互之間具有復雜關系的數(shù)據(jù);因此一個DataSet除了可以包含任意數(shù)目的表,每個表一般對應于一個數(shù)據(jù)庫表或視圖之外,一個DataSet還可以包含表間關系、數(shù)據(jù)約束等,所有這些和關系數(shù)據(jù)庫模型基本一致,所以無論它包含的數(shù)據(jù)來自什么數(shù)據(jù)源,都會提供一致的關系編程模型。
一個Dataset對象包括表集合(DataTableCollection)和關系集合(DataRelationCollection),表集合由一組Datatable對象組成,關系集合由一組Datarelation對象組成。
Datatable對象:表示創(chuàng)建在Dataset中的一個表。
Datarelation對象:表示兩個表之間的關系。
三、通過ADO.NET訪問WEB數(shù)據(jù)庫的實例
支持離線訪問是ADO.NET的最大優(yōu)勢,這在訪問WEB數(shù)據(jù)庫時才得以體現(xiàn)出來,下面以一個網(wǎng)站商品管理系統(tǒng)的商品查詢模塊為例來說明利用ADO.NET對數(shù)據(jù)庫的訪問過程。程序使用C#.NET編寫有關代碼,數(shù)據(jù)庫服務器為SQL Server2000,用戶數(shù)據(jù)庫的名稱為“商品管理”,為作者自建的示例數(shù)據(jù)庫,“商品”為“商品管理”數(shù)據(jù)庫下的表,它包括如下字段:商品編號、商品名稱、生產(chǎn)廠商、型號、商品價格等。開發(fā)工具采用Visual Studio.NET 2003。
商品價格查詢功能是:在打開的網(wǎng)頁上輸入待查找的商品名稱,單擊查詢按鈕,則在頁面輸出查詢結果。因為ASP.NET采用了網(wǎng)頁HTML代碼與程序代碼分開的做法,這里只列出程序代碼:
namespace WebApp
{ public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
}
private void Query(object sender, System.EventArgs e)
{
string sqlstr1=”SELECT * FROM 商品where 商品名稱=@name”;
string connstr1 =“data source=localhost; initial catalog=商品管理;user id=sa;password=”;
SqlConnection sqlConn1 = new System.Data.SqlClient.SqlConnection(connstr1);
SqlCommand sqlCmd1 = new SqlCommand(sqlstr1,sqlCon1);
SqlParameter sqlPar1=new SqlParameter(“@name”,SqlDbType.NVarChar,20);
sqlPar1.Value=this.TextBox1.Text;
sqlCmd1.Parameters.Add(sqlPar1);
SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlCmd1);
DataSet dataSet1 = new DataSet();
sqlDataAdapter1.Fill(dataSet1,“商品”);
DataGrid1.DataSource=dataSet1;
DataGrid1.DataBind();
四、總結
隨著網(wǎng)絡技術的發(fā)展,網(wǎng)絡數(shù)據(jù)庫以及相應的訪問技術也是不斷的發(fā)展完善,ADO.NET 數(shù)據(jù)訪問技術就是其中之一,越來越多的人開始使用它開發(fā)Web 數(shù)據(jù)庫應用程序。
參考文獻:
[1]萬松明張濱義譯:Martin Brett Tomson.循序漸進ASP.NET教程,北京:人民郵電出版社
[2]鄒建峰李律松李曉栓:ASP.NET開發(fā)技術詳解[M].北京:人民郵電出版社,2005.1
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。