ADO.NET入门教程(一) 初识ADO.NET
摘要
作為.NET框架最重要的組件之一,ADO.NET扮演著應(yīng)用程序與數(shù)據(jù)交互的重要的角色。本文將從宏觀的角度來探討ADO.NET,和大家一起了解ADO.NET來龍去脈以及ADO.NET的主要組成部分。
?目錄
- 什么是ADO.NET?
- 理清ADO.NET與ADO的關(guān)系
- 認(rèn)識(shí)ADO.NET最核心的組成部分
- ADO.NET擴(kuò)展
?
1. 什么是ADO.NET?
???? ?簡單的講,ADO.NET是一組允許.NET開發(fā)人員使用標(biāo)準(zhǔn)的,結(jié)構(gòu)化的,甚至無連接的方式與數(shù)據(jù)交互的技術(shù)。對(duì)于ADO.NET來說,可以處理數(shù)據(jù)源是多樣的。可以是應(yīng)用程序唯一使用的創(chuàng)建在內(nèi)存中數(shù)據(jù),也可以是與應(yīng)用程序分離,存儲(chǔ)在存儲(chǔ)區(qū)域的數(shù)據(jù)(如文本文件、XML、關(guān)系數(shù)據(jù)庫等)。
????? 具體來說,ADO.NET 對(duì) Microsoft SQL Server 和 XML 等數(shù)據(jù)源以及通過 OLE DB 和 XML 公開的數(shù)據(jù)源提供一致的訪問。數(shù)據(jù)共享使用者應(yīng)用程序可以使用 ADO.NET 來連接到這些數(shù)據(jù)源,并檢索、處理和更新所包含的數(shù)據(jù)。
????? 作為.NET框架的重要組成部分,ADO.NET 類封裝在 System.Data.dll 中,并且與 System.Xml.dll 中的 XML 類集成。當(dāng)編譯使用 System.Data 命名空間的代碼時(shí),需要引用System.Data.dll 和 System.Xml.dll。
?
2. 理清ADO.NET與ADO的關(guān)系
????? 作為一個(gè)普通的縮略詞,"ADO.NET”并只不是"ADO”的簡單升級(jí)版本。嚴(yán)格的講,ADO.NET和ADO是兩種截然不同的數(shù)據(jù)訪問方式。
????? ADO的全稱是Activex Data Objects,它是早期(.NET還未實(shí)施)開發(fā)人員用來訪問數(shù)據(jù)的組件。隨著.NET的發(fā)展,ADO.NET順其自然地以其顯著的優(yōu)越性逐步取代ADO。從技術(shù)層面講,ADO使用OLE DB接口并基于微軟的COM技術(shù),而ADO.NET擁有自己的ADO.NET接口并且基于微軟的.NET體系架構(gòu)。
????? 雖然大多數(shù)基于 .NET 的新應(yīng)用程序?qū)⑹褂?ADO.NET 來編寫,但 .NET 程序員仍然可以通過 .NET COM 互操作性服務(wù)來使用 ADO。
?
3. 認(rèn)識(shí)ADO.NET最核心的組成部分
????? System.Data命名空間提供了不同的ADO.NET類,它們既分工明確,又相互協(xié)作地提供表格數(shù)據(jù)的訪問服務(wù)。該類庫包含兩組重要的類:一組負(fù)責(zé)處理軟件內(nèi)部的實(shí)際數(shù)據(jù)(DataSet),一組負(fù)責(zé)與外部數(shù)據(jù)系統(tǒng)通信(Data Provider)。具體架構(gòu)如下圖所示:
?
??????????????????????? 圖1.3.1? ADO.NET核心組件
?
????? DataSet 是 ADO.NET 的非連接(斷開)結(jié)構(gòu)的核心組件。DataSet 的設(shè)計(jì)目的很明確:為了實(shí)現(xiàn)獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問。因此,ADO.NET結(jié)構(gòu)可以用于多種不同的數(shù)據(jù)源,用于 XML 數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DataSet 包含一個(gè)或多個(gè) DataTable 對(duì)象的集合,這些對(duì)象由數(shù)據(jù)行和數(shù)據(jù)列以及主鍵、外鍵、約束和有關(guān) DataTable 對(duì)象中數(shù)據(jù)的關(guān)系信息組成。
????? ADO.NET 結(jié)構(gòu)的另一個(gè)核心元素是 .NET 數(shù)據(jù)提供程序(Data Provider)。具體包括:
- Connection 對(duì)象提供與數(shù)據(jù)源的連接。
- Command對(duì)象使您能夠訪問用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫命令。
- DataReader 對(duì)象從數(shù)據(jù)源中提供快速的,只讀的數(shù)據(jù)流。
- DataAdapter 對(duì)象提供連接 DataSet 對(duì)象和數(shù)據(jù)源的橋梁。DataAdapter 使用 Command 對(duì)象在數(shù)據(jù)源中執(zhí)行 SQL 命令,以便將數(shù)據(jù)加載到 DataSet 中,并使對(duì) DataSet 中數(shù)據(jù)的更改與數(shù)據(jù)源保持一致。
?
4. ADO.NET擴(kuò)展
????? 提供一致的數(shù)據(jù)訪問,是使用ADO.NET的一個(gè)關(guān)鍵的優(yōu)勢(shì)。但是對(duì)于開發(fā)人員來說,更大的優(yōu)勢(shì)是通過ADO.NET將管理的數(shù)據(jù)作為對(duì)象來說處理。?表中的每個(gè)字段都是強(qiáng)類型成員,與.NET 通用類型系統(tǒng)(Common Type System)完全兼容。個(gè)別的字段甚至可以作為局部變量來使用。數(shù)據(jù)行或者其他的數(shù)據(jù)集對(duì)象是標(biāo)準(zhǔn)的.NET 集合(Collections),可以用標(biāo)準(zhǔn)的迭代方法處理。
????? Entity Framework和LINQ是微軟為了提高ADO.NET核心功能而建立的兩個(gè)新的工具。需要注意的是,它們并不是ADO.NET的基本組成部分。
????? Entity Framework 利用了抽象化數(shù)據(jù)結(jié)構(gòu)的方式,將每個(gè)數(shù)據(jù)庫對(duì)象都轉(zhuǎn)換成應(yīng)用程序?qū)ο?(entity),而數(shù)據(jù)字段都轉(zhuǎn)換為屬性 (property),關(guān)系則轉(zhuǎn)換為結(jié)合屬性 (association),讓數(shù)據(jù)庫的 E/R 模型完全的轉(zhuǎn)成對(duì)象模型。而在抽象化的結(jié)構(gòu)之下,則是高度集成與對(duì)應(yīng)結(jié)構(gòu)的概念層、對(duì)應(yīng)層和儲(chǔ)存層,以及支持 Entity Framework 的數(shù)據(jù)提供者 (provider),讓數(shù)據(jù)訪問的工作得以順利與完整的進(jìn)行。
????? LINQ允許編寫C#或者Visual Basic代碼以查詢數(shù)據(jù)庫相同的方式操作內(nèi)存數(shù)據(jù)。LINQ是一個(gè)通用的數(shù)據(jù)工具,可以讓你非常容易地融合不同數(shù)據(jù)源的數(shù)據(jù),并得到單一的數(shù)據(jù)結(jié)果集。
轉(zhuǎn)載于:https://www.cnblogs.com/chenmfly/p/4876602.html
總結(jié)
以上是生活随笔為你收集整理的ADO.NET入门教程(一) 初识ADO.NET的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java从入门到精通08-二进制、位运算
- 下一篇: XML 解析错误:XML 或文本声明不在