ADO.NET简介
微軟數據訪問方式歷史階段
1,ODBC (Open Database Connectivity)是第一個使用SQL訪問不同關系數據庫的數據訪問技術。使用ODBC應用程序能夠通過單一的命令操縱不同的數據庫,而開發人員需要租的僅僅只是針對不同的應用加入相應的OBDC驅動
2,DAO(Data Access Objects)不像OBDC那樣是面向C/C++程序員的,他是微軟提供給Visual Basic開發人員的一種簡單的數據訪問方法,用于操控Access數據庫
3,RDO(Remote Data Objects)在使用DAO訪問不同的關系型數據庫的時候,jet引擎不得不在DAO和ODBC之間進行命令的轉化,導致了性能的下降,而RDO的出現就順利成章了
4,OLE DB(Object Link and embed)隨著越來越多的數據以非關系型格式存儲,需要一種型的架構來提供這種應用和數據源之間的無縫連接,基于COM(Component Object Model)的OLE DB應運而生了
5,ADO基于OLE DB之上的ADO更簡單,更高級,更合適C#程序員,同時消除了OLE DB的多種弊端,取而代之是微軟技術的發展趨勢
ADO.NET簡介
ADO.NET的名稱起源于ADO(ActiveX Data Objects)是一個COM組件庫,也就是一個通用框架類庫,該類庫鍵跨域所有存在的WindowsAPI函數,簡單來說罵他是在.NET編程環境中使用的數據訪問接口
ADO.NET 是與C#和.NET Framework一起使用的類集的名稱,用于以關系型的,面向表的格式訪問數據
ADO.NET被集成到.NET Framework中,可以用于任何.NET語言,尤其是C#語言
ADO.NET有兩部分構成:
1,數據提供程序(Provider):它能和數據庫保持鏈接并且執行SQL命令,操縱數據集。
2,數據集(DataSet):能與數據庫在斷開鏈接的情況下進行數據庫的操作
ADO.NET技術中的五大對象
Connection Command DataReader DataAdapter DataSet
Connection 類
和數據庫交互,必須連接它。連接幫助指明數據庫服務器、數據庫名字、用戶名、密碼,和連接數據庫所需要的其它參數。Connection對象會被Command對象使用,這樣就能夠知道是在哪個數據源上面執行命令。
與數據庫交互的過程意味著必須指明想要執行的操作。這是依靠Command對象執行的。開發人員使用Command對象來發送SQL語句給數據庫。Command對象使用Connection對象來指出與哪個數據源進行連接。開發人員能夠單獨使用Command對象來直接執行命令,或者將一個Command對象的引用傳遞給DataAdapter,它保存了一組能夠操作下面描述的一組數據的命令。
Command對象
成功與數據建立連接后,就可以用Command對象來執行查詢、修改、插入、刪除等命令;Command對象常用的方法有ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入數據可用ExecuteNonQuery()方法來執行插入命令。
DataReader類
許多數據操作要求開發人員只是讀取一串數據。DataReader對象允許開發人員獲得從Command對象的SELECT語句得到的結果??紤]性能的因素,從DataReader返回的數據都是快速的且只是“向前”的數據流。這意味著開發人員只能按照一定的順序從數據流中取出數據。這對于速度來說是有好處的,但是如果開發人員需要操作數據,更好的辦法是使用DataSet。
DataSet對象
DataSet對象是數據在內存中的表示形式。它包括多個DataTable對象,而DataTable包含列和行,就象一個普通的數據庫中的表。開發人員甚至能夠定義表之間的關系來創建主從關系(parent-child relationships)。DataSet是在特定的場景下使用――幫助管理內存中的數據并支持對數據的斷開操作的。DataSet是被所有Data Providers使用的對象,因此它并不像Data Provider一樣需要特別的前綴
DataAdapter類
某些時候開發人員使用的數據主要是只讀的,并且開發人員很少需要將其改變至底層的數據源。同樣一些情況要求在內存中緩存數據,以此來減少并不改變的數據被數據庫調用的次數。DataAdapter通過斷開模型來幫助開發人員方便的完成對以上情況的處理。當在一單批次的對數據庫的讀寫操作的持續的改變返回至數據庫的時候,DataAdapter 填充(fill)DataSet對象。DataAadapter包含對連接對象以及當對數據庫進行讀取或者寫入的時候自動的打開或者關閉連接的引用。另外,DataAdapter包含對數據的SELECT、INSERT、UPDATE和DELETE操作的Command對象引用。開發人員將為DataSet中的每一個Table都定義DataAadapter,它將為開發人員照顧所有與數據庫的連接。所以開發人員將做的工作是告訴DataAdapter什么時候裝載或者寫入到數據庫
DataTable類
DataTable 是一個數據網格控件。它可以被應用在 VB 和 ASP 上。它無須代碼就可以簡單的綁定數據庫。它具有微軟風格的用戶界面。
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;
(一個舉例)
數據庫比作水源,存儲了大量的水(數據); Connection: 好比深入水中進水口,保持與水的接觸,只有它與水進行“鏈接”,其他對象才可以抽到水(訪問到數據) Command: 則像抽水機,為抽水提供動力和執行方法,然后把水返給上面的”水管“ DataAdpter、DataReader: 就像輸水管,擔任著水的傳輸任務,并起著橋梁的作用。 DataAdapter 是通過發動機把水運輸到水庫里面保持 DataReader 單向地直接把水送到需要水的用戶那里,所以要比水庫中轉一下速度更快, DataSet: 則是一個大水箱,把抽上來的水按著一定關系的池子進行存放,即使撤掉“抽水裝置”(斷開鏈接,離線狀態)也可以保持“水”的存在。這也正是ADO.NET的核心 DataTable: 則像是水庫中的每個獨立的水池子,分別存放不同種類的水,一個大水庫由多個這樣的水池子組成總結
- 上一篇: 线性规划(一):基本概念
- 下一篇: ASP.NET MVC Area使用-将