ADO.NET入門教程(一) 初識ADO.NET


摘要

作為.NET框架最重要的組件之一,ADO.NET扮演着應用程序與數據交互的重要的角色。本文將從宏觀的角度來探討ADO.NET,和大家一起了解ADO.NET來龍去脈以及ADO.NET的主要組成部分。


 目錄


 

1. 什么是ADO.NET?

      簡單的講,ADO.NET是一組允許.NET開發人員使用標准的,結構化的,甚至無連接的方式與數據交互的技術。對於ADO.NET來說,可以處理數據源是多樣的。可以是應用程序唯一使用的創建在內存中數據,也可以是與應用程序分離,存儲在存儲區域的數據(如文本文件、XML、關系數據庫等)。

      具體來說,ADO.NET 對 Microsoft SQL Server 和 XML 等數據源以及通過 OLE DB 和 XML 公開的數據源提供一致的訪問。數據共享使用者應用程序可以使用 ADO.NET 來連接到這些數據源,並檢索、處理和更新所包含的數據。

      作為.NET框架的重要組成部分,ADO.NET 類封裝在 System.Data.dll 中,並且與 System.Xml.dll 中的 XML 類集成。當編譯使用 System.Data 命名空間的代碼時,需要引用System.Data.dll 和 System.Xml.dll。

 

2. 理清ADO.NET與ADO的關系

      作為一個普通的縮略詞,"ADO.NET”並只不是"ADO”的簡單升級版本。嚴格的講,ADO.NET和ADO是兩種截然不同的數據訪問方式

      ADO的全稱是Activex Data Objects,它是早期(.NET還未實施)開發人員用來訪問數據的組件。隨着.NET的發展,ADO.NET順其自然地以其顯著的優越性逐步取代ADO。從技術層面講,ADO使用OLE DB接口並基於微軟的COM技術,而ADO.NET擁有自己的ADO.NET接口並且基於微軟的.NET體系架構。

      雖然大多數基於 .NET 的新應用程序將使用 ADO.NET 來編寫,但 .NET 程序員仍然可以通過 .NET COM 互操作性服務來使用 ADO。

 

3. 認識ADO.NET最核心的組成部分

      System.Data命名空間提供了不同的ADO.NET類,它們既分工明確,又相互協作地提供表格數據的訪問服務。該類庫包含兩組重要的類:一組負責處理軟件內部的實際數據(DataSet),一組負責與外部數據系統通信(Data Provider)。具體架構如下圖所示:

 

                        圖1.3.1  ADO.NET核心組件

 

      DataSet 是 ADO.NET 的非連接(斷開)結構的核心組件。DataSet 的設計目的很明確:為了實現獨立於任何數據源的數據訪問。因此,ADO.NET結構可以用於多種不同的數據源,用於 XML 數據,或用於管理應用程序本地的數據。DataSet 包含一個或多個 DataTable 對象的集合,這些對象由數據行和數據列以及主鍵、外鍵、約束和有關 DataTable 對象中數據的關系信息組成。

      ADO.NET 結構的另一個核心元素是 .NET 數據提供程序(Data Provider)。具體包括:

  • Connection 對象提供與數據源的連接。
  • Command對象使您能夠訪問用於返回數據、修改數據、運行存儲過程以及發送或檢索參數信息的數據庫命令。
  • DataReader 對象從數據源中提供快速的,只讀的數據流。
  • DataAdapter 對象提供連接 DataSet 對象和數據源的橋梁。DataAdapter 使用 Command 對象在數據源中執行 SQL 命令,以便將數據加載到 DataSet 中,並使對 DataSet 中數據的更改與數據源保持一致。

 

4. ADO.NET擴展

      提供一致的數據訪問,是使用ADO.NET的一個關鍵的優勢。但是對於開發人員來說,更大的優勢是通過ADO.NET將管理的數據作為對象來說處理。 表中的每個字段都是強類型成員,與.NET 通用類型系統(Common Type System)完全兼容。個別的字段甚至可以作為局部變量來使用。數據行或者其他的數據集對象是標准的.NET 集合(Collections),可以用標准的迭代方法處理。

      Entity Framework和LINQ是微軟為了提高ADO.NET核心功能而建立的兩個新的工具。需要注意的是,它們並不是ADO.NET的基本組成部分

      Entity Framework 利用了抽象化數據結構的方式,將每個數據庫對象都轉換成應用程序對象 (entity),而數據字段都轉換為屬性 (property),關系則轉換為結合屬性 (association),讓數據庫的 E/R 模型完全的轉成對象模型。而在抽象化的結構之下,則是高度集成與對應結構的概念層、對應層和儲存層,以及支持 Entity Framework 的數據提供者 (provider),讓數據訪問的工作得以順利與完整的進行。

      LINQ允許編寫C#或者Visual Basic代碼以查詢數據庫相同的方式操作內存數據。LINQ是一個通用的數據工具,可以讓你非常容易地融合不同數據源的數據,並得到單一的數據結果集。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM