摘要

作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角色。本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET的主要组成部分。


目录

  • 什么是ADO.NET?
  • 理清ADO.NET与ADO的关系
  • 认识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是一个通用的数据工具,可以让你非常容易地融合不同数据源的数据,并得到单一的数据结果集。

转载于:https://www.cnblogs.com/chenmfly/p/4876602.html

ADO.NET入门教程(一) 初识ADO.NET相关推荐

  1. vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...

    原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...

  2. 你必须知道的ADO.NET(一) 初识ADO.NET

    要 作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角色.本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET的主要组成部分. ...

  3. 零基础CSS入门教程(1)–初识CSS

    点此查看 所有教程.项目.源码导航 本文目录 1. 前言 2. HTML与CSS区别 3. CSS有哪些功能 4. 如何学习CSS 1. 前言 学习CSS是离不开HTML的,HTML是CSS的基础,如 ...

  4. 查询用户所有信息后只需要两个字段的信息_Excel VBA+ADO+SQL入门教程023:OpenSchema获取表信息...

    点上方关注我们,每日1练,每天进步一点点  1. 我们在使用SQL语言对数据库数据进行查询之前,有时需要获取每张表的表名,甚至获取每张表每个字段的名称等:比如,当我们进行跨工作簿数据查询及汇总时,在不 ...

  5. ADO.NET入门教程(三) 连接字符串,你小觑了吗?

    出处:http://www.cnblogs.com/liuhaorain/archive/2012/02/12/2347914.html 摘要 ADO.NET强大的优势在于对不同的数据源提供一致的访问 ...

  6. vba mysql·教程_Excel VBA ADO SQL入门教程004:SQL中的Excel表

    1. 上期我们聊了SQL常用查询语句中的字段查询,其简化版语法如下: SELECT 字段名 FROM 表名 当时我们说,FROM关键词指明了要获取字段信息的表的名称.倘若数据源是Excel表格,则需要 ...

  7. 零基础HTML入门教程(11)--初识VSCode

    点此查看 所有教程.项目.源码导航 本文目录 1. 编辑器 2. 编辑器是干啥的 3. VSCode编辑器的特长 4. VSCode下载与安装 5. VSCode安装 6. 小结 1. 编辑器 在之前 ...

  8. python的numpy教程_Python入门教程(一):初识Numpy

    点击上方 蓝字 关注我们! Numpy是Python中较为常用的模块,今天我们就从Numpy的基础应用讲起,非常适合0基础的小白哦,python系列的基础课程也会持续更新. 首先,我们在运用某个模块之 ...

  9. Netty入门教程——初识Netty

    Netty入门教程之初识Netty,本次会写几篇文章来详细说下netty. 文章目录 什么是Netty 什么是Netty Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一 ...

最新文章

  1. IHttpHandler 概述
  2. 《LeetCode力扣练习》第9题 C语言版 (做出来就行,别问我效率。。。。)
  3. Mysql 错误 Code: 1093. You can't specify target table for update in FROM clause
  4. 基本响应性的Web设计测试工具
  5. .NET 项目中的单元测试
  6. 记录一次cookie导致登录失败的惨案
  7. 【英语学习】【WOTD】 logy 释义/词源/示例
  8. AMD第七代桌面APU揭秘:主流首次上DDR4
  9. maven项目动态替换配置中的值
  10. Mutex和内存可见性
  11. MySQL · 特性分析 · 执行计划缓存设计与实现
  12. 校园网认证破解教程(广某大学)
  13. JavaScript使用drag事件
  14. shopex4.8.5 php5.6,ShopEx(网上商店系统)
  15. 基础汇编语言程序设计
  16. IP地址、子网掩码、网关地址和MAC地址
  17. canvas 实现图片局部模糊_HTML5 Canvas图片马赛克模糊动画
  18. Pandas数据分析案例(盛华化工锅炉排放数据可视化分析)
  19. 大蒜敷脚心涌泉穴的功效和具体方法
  20. IT行业岗位及发展方向

热门文章

  1. Unicode和UTF-8的区别
  2. df.isnull使用细节
  3. android 动画多次使用,IOS使用animation引用同一个动画多次没反应,安卓可以
  4. mysql 指示符安装,Mysql的安装
  5. ajax empty,jQuery empty仅在AJAX调用后的第二次单击时起作用
  6. dell 2r30服务器装系统,DELL服务器操作系统安装汇总.docx
  7. php 多个数组乘积_VLOOKUP参数使用数组
  8. 天翼云从业认证(2.3)云计算的价值和核心技术。
  9. 在eclipse导入SSH项目
  10. 每个软件开发人员都应该知道的5种设计模式