ADO.NET的簡介
ADO.NET的名稱起源于ADO(ActiveX Data Objects),這是一個廣泛的類組,用于在以往的Microsoft技術中訪問數(shù)據(jù).之所以使用ADO.NET名稱,是因為Microsoft希望表明,這是在.NET編程環(huán)境中優(yōu)先使用的數(shù)據(jù)訪問接口.
一、ADO.NET的作用
它提供了平臺互用性和可伸縮的數(shù)據(jù)訪問。ADO.NET增強了對非連接編程模式的支持,并支持RICH XML。由于傳送的數(shù)據(jù)都是XML格式的,因此任何能夠讀取XML格式的應用程序都可以進行數(shù)據(jù)處理。事實上,接受數(shù)據(jù)的組件不一定要是ADO .NET組件,它可以是基于一個Microsoft Visual Studio的解決方案,也可以是任何運行在其它平臺上的任何應用程序。
ADO.NET是一組用于和數(shù)據(jù)源進行交互的面向?qū)ο箢悗?。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫,但它同樣也能夠是文本文件、Excel表格或者XML文件。
ADO.NET允許和不同類型的數(shù)據(jù)源以及數(shù)據(jù)庫進行交互。然而并沒有與此相關的一系列類來完成這樣的工作。因為不同的數(shù)據(jù)源采用不同的協(xié)議,所以對于不同的數(shù)據(jù)源必須采用相應的協(xié)議。一些老式的數(shù)據(jù)源使用ODBC協(xié)議,許多新的數(shù)據(jù)源使用OleDb協(xié)議,并且現(xiàn)在還不斷出現(xiàn)更多的數(shù)據(jù)源,這些數(shù)據(jù)源都可以通過.NET的ADO.NET類庫來進行連接。
ADO.NET提供與數(shù)據(jù)源進行交互的相關的公共方法,但是對于不同的數(shù)據(jù)源采用一組不同的類庫。這些類庫稱為Data Providers,并且通常是以與之交互的協(xié)議和數(shù)據(jù)源的類型來命名的。
二、ADO.NET包含的類
1、Connection 類
和數(shù)據(jù)庫交互,你必須連接它。連接幫助指明數(shù)據(jù)庫服務器、數(shù)據(jù)庫名字、用戶名、密碼,和連接數(shù)據(jù)庫所需要的其它參數(shù)。Connection對象會被Command對象使用,這樣就能夠知道是在哪個數(shù)據(jù)源上面執(zhí)行命令。
與數(shù)據(jù)庫交互的過程意味著你必須指明想要執(zhí)行的操作。這是依靠Command對象執(zhí)行的。你使用Command對象來發(fā)送SQL語句給數(shù)據(jù)庫。Command對象使用Connection對象來指出與哪個數(shù)據(jù)源進行連接。你能夠單獨使用Command對象來直接執(zhí)行命令,或者將一個Command對象的引用傳遞給DataAdapter,它保存了一組能夠操作下面描述的一組數(shù)據(jù)的命令。
2、Command對象
成功于數(shù)據(jù)建立連接后,就可以用Command對象來執(zhí)行查詢、修改、插入、刪除等命令; Command對象常用的方法有ExecuteReader方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入數(shù)據(jù)可用ExecuteNonQuery()方法來執(zhí)行插入命令。
3、DataReader類
許多數(shù)據(jù)操作要求你只是讀取一串數(shù)據(jù)。DataReader對象允許你獲得從Command對象的SELECT語句得到的結果。考慮性能的因素,從DataReader返回的數(shù)據(jù)都是快速的且只是“向前”的數(shù)據(jù)流。這意味著你只能按照一定的順序從數(shù)據(jù)流中取出數(shù)據(jù)。這對于速度來說是有好處的,但是如果你需要操作數(shù)據(jù),更好的辦法是使用DataSet。
4、DataSet對象
DataSet對象是數(shù)據(jù)在內(nèi)存中的表示形式。它包括多個DataTable對象,而DataTable包含列和行,就象一個普通的數(shù)據(jù)庫中的表。你甚至能夠定義表之間的關系來創(chuàng)建主從關系(parent-child relationships)。DataSet是在特定的場景下使用――幫助管理內(nèi)存中的數(shù)據(jù)并支持對數(shù)據(jù)的斷開操作的。DataSet是被所有Data Providers使用的對象,因此它并不像Data Provider一樣需要特別的前綴。
6、DataAdapter類
某些時候你使用的數(shù)據(jù)主要是只讀的,并且你很少需要將其改變至底層的數(shù)據(jù)源。同樣一些情況要求在內(nèi)存中緩存數(shù)據(jù),以此來減少并不改變的數(shù)據(jù)被數(shù)據(jù)庫調(diào)用的次數(shù)。DataAdapter通過斷開模型來幫助你方便的完成對以上情況的處理。當在一單批次的對數(shù)據(jù)庫的讀寫操作的持續(xù)的改變返回至數(shù)據(jù)庫的時候,DataAdapter 填充(fill)DataSet對象。DataAadapter包含對連接對象以及當對數(shù)據(jù)庫進行讀取或者寫入的時候自動的打開或者關閉連接的引用。
另外,DataAdapter包含對數(shù)據(jù)的SELECT、INSERT、UPDATE和DELETE操作的Command對象引用。你將為DataSet中的每一個Table都定義DataAadapter,它將為你照顧所有與數(shù)據(jù)庫的連接。所有你將做的工作是告訴DataAdapter什么時候裝載或者寫入到數(shù)據(jù)庫。
7、DataTable類
DataTable 是一個數(shù)據(jù)網(wǎng)格控件。它可以被應用在 VB 和 ASP 上。它無須代碼就可以簡單的綁定數(shù)據(jù)庫。它具有微軟風格的用戶界面。
DataTable的實例化以及添加列:
- DataTable dt = new DataTable();
- dt.Columns.Add("ID");
- dt.Columns.Add("Name");
- DataRow dr = dt.NewRow();
- object[] objs = { 1, "Name" };
- dr.ItemArray = objs;
- dt.Rows.Add(dr);
- this.dataGridView1.DataSource = dt;
三、總結
ADO.NET是與數(shù)據(jù)源交互的.NET技術。有許多的Data Providers,它將允許與不同的數(shù)據(jù)源交流――取決于它們所使用的協(xié)議或者數(shù)據(jù)庫。然而無論使用什么樣的Data Provider,你將使用相似的對象與數(shù)據(jù)源進行交互。SqlConnection對象管理與數(shù)據(jù)源的連接。SqlCommand對象允許你與數(shù)據(jù)源交流并發(fā)送命令給它。為了對進行快速的只“向前”地讀取數(shù)據(jù),使用SqlDataReader。如果想使用斷開數(shù)據(jù),使用DataSet并實現(xiàn)能進行讀取或者寫入數(shù)據(jù)源的SqlDataAdapter。
【編輯推薦】