ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。

  • 外文名

  • ActiveX Data Objects

  • 发布单位

  • 微软公司

  • 分    类

  • 数据访问接口

  • 特    点

  • 平台互用性

简介

编辑

ado.net可让开发人员以一致的方式存取资料来源(例如 SQL Server 与 XML),以及透过 OLE DB 和 ODBC 所公开的资料来源。资料共用的消费者应用程序可使用ado.net 来连接至这些资料来源,并且撷取、处理及更新其中所含的资料。

ado.net可将资料管理的资料存取分成不连续的元件,这些元件可分开使用,也可串联使用ado.net也包含 .NET Framework 资料提供者,以用于连接资料库、执行命令和撷取结果。这些结果会直接处理、放入ado.net DataSet 物件中以便利用机器操作 (Ad Hoc)的方式公开给使用者、与多个来源的资料结合,或在各层之间进行传递。DataSet 物件也可以与.NET Framework 资料提供者分开使用,以便管理应用程序本机的资料或来自 XML 的资料。

ado.net类别 (Class) 位于 System.Data.dll 中,而且会与 System.Xml.dll 中的XML 类别整合。

ado.net可为撰写 Managed 程式码的开发人员提供类似于ActiveX Data Objects (ADO)提供给原生元件物件模型 (Component Object Model,COM)开发人员的功能。建议使用ado.net而非ADO来存取.NET 应用程序中的资料。

ADO .NET会提供最直接的方法,让开发人员在 .NET Framework 中进行资料存取。

隐私权声明

System.Data.dll、System.Data.Design.dll、System.Data.OracleClient.dll、System.Data.SqlXml.dll、System.Data.Linq.dll、System.Data.SqlServerCe.dll 和 System.Data.DataSetExtensions.dll 组件无法区分使用者的私用资料与非私用资料。这些组件不会收集、储存或传输任何使用者的私用资料。不过,协力厂商应用程序可能会使用这些组件来收集、存储或传输使用者的私用资料。

发展

编辑

1998年起,因为Web应用程序的窜起,大大改变了许多应用程序的设计方式,传统的数据库连线保存设计法无法适用于此类应用程序,这让ADO应用程序遇到了很大的瓶颈,也让微软开始思考让资料集(Resultset,在ADO中称为Recordset)能够离线化的能力,以及能在用户端创建一个小型数据库的概念,这个概念就是ado.net中离线型资料模型 (disconnected data model) 的基础,而在ADO的使用情形来看,数据库连线以及资源耗用的情形较严重(像是 Server-side cursor 或是 Recordset.Open 会保持连线状态),在ado.net中也改良了这些物件,构成了能够减少数据库连线和资源使用量的功能。XML的使用也是这个版本的重要发展之一。2000年,微软的Microsoft .NET计划开始成形,许多的微软产品都冠上.NET的标签,ADO+也不例外,改名为ado.net并包装到.NET Framework类别库中,成为.NET平台中唯一的资料存取元件。[1]

架构

编辑

传统的资料处理主要是依赖相互连接的双层式模型。随着资料处理朝多层次架构发展,程式设计人员也逐渐改用中断连接的方式,使应用程序更具延展性(Scalability)。

ADO .NET3.0 中用于存取和管理资料的两个主要元件是 .NET Framework 资料提供者和 DataSet。

资料提供者

.NET Framework 资料提供者是一种明确设计用于管理资料以及快速存取顺向只读资料的元件。Connection 物件会提供资料来源的连接。Command 物件可让开发人员存取资料库命令,以便传回资料、修改资料、执行预存程序 (Stored Procedure),并且传送或撷取参数资讯。DataReader 则可提供来自资料来源的高效能资料流。最后,DataAdapter 会提供 DataSet 物件与资料来源之间的桥接器 (Bridge)。DataAdapter 会使用 Command 物件与资料来源处执行 SQL 命令,以便将资料载入 DataSet,并且将 DataSet 内的资料变更调节回资料来源。

DataSet

ado.net DataSet 的设计已明确指出它可独立于任何资料来源外而存取资料。因此,它可与多个不同的资料里来源搭配使用、与 XML 资料搭配使用,或用于管理应用程序的本机资料。DataSet 包含一或多个由资料列和资料行所组成的 DataTable 物件集合,以及 DataTable 物件中的主索引键、外部索引键、条件约束 (Constraint) 及资料的相关资讯。

ADO.NET 架构

右图说明 .NET Framework 资料提供者与 DataSet 之间的关联性。

作用

编辑

它提供了平台互用性和可伸缩的数据访问,ADO .NET增强了对非连接编程模式的支持,并支持RICH XML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。

ado.net是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。

ado.net允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过NET的ADO .NET类库来进行连接。

ado.net提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。[2]

ado.net是与数据源交互的.NET技术。有许多的Data Providers,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,开发人员将使用相似的对象与数据源进行交互。SqlConnection对象管理与数据源的连接。SqlCommand对象允许开发人员与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的SqlDataAdapter。[3]

类库

编辑

Connection 类

和数据库交互,必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。

与数据库交互的过程意味着必须指明想要执行的操作。这是依靠Command对象执行的。开发人员使用Command对象来发送SQL语句给数据库。Command对象使用Connection对象来指出与哪个数据源进行连接。开发人员能够单独使用Command对象来直接执行命令,或者将一个Command对象的引用传递给DataAdapter,它保存了一组能够操作下面描述的一组数据的命令。[3]

Command对象

成功与数据建立连接后,就可以用Command对象来执行查询、修改、插入、删除等命令;Command对象常用的方法有ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命令。[3]

DataReader类

许多数据操作要求开发人员只是读取一串数据。DataReader对象允许开发人员获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着开发人员只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果开发人员需要操作数据,更好的办法是使用DataSet。[3]

DataSet对象

DataSet对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。开发人员甚至能够定义表之间的关系来创建主从关系(parent-child relationships)。DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有Data Providers使用的对象,因此它并不像Data Provider一样需要特别的前缀。[3]

DataAdapter类

某些时候开发人员使用的数据主要是只读的,并且开发人员很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。DataAdapter通过断开模型来帮助开发人员方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,DataAdapter 填充(fill)DataSet对象。DataAadapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,DataAdapter包含对数据的SELECT、INSERT、UPDATE和DELETE操作的Command对象引用。开发人员将为DataSet中的每一个Table都定义DataAadapter,它将为开发人员照顾所有与数据库的连接。所以开发人员将做的工作是告诉DataAdapter什么时候装载或者写入到数据库。[3]

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;[3]

备注:转自http://baike.baidu.com/link?url=Bb-3R9uaPUtWngIGfhybcZs_HR6xVU6xHQormMD3UXopJ0P2jzl7m1GwsCFYIE6yqjSG3kAGwrNBvCTY_tD0e_

转载于:https://blog.51cto.com/jiaojusuimu/1882262

数据库访问技术(二)---ADO.NET相关推荐

  1. ODBC OLEDB ADO等数据库访问技术

    花了点时间理了一下数据库访问技术相关的东西,一般地,一个数据库产品的发布后,相应地,会为开发者提供一套访问改数据库的接口,比如MySql提供的C API,可以通过这些数据库产品本身的API进行数据库操 ...

  2. .NET/C#大型项目研发必备(7)--DataAccess数据库访问技术

    前言:本系列文章适合有初/中级.NET知识的同学阅读. (1)本系列文章,旨在讲述研发一个中大型项目所需要了解的一系列"基本构件",并提供这些"基本构件"的[最 ...

  3. VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程.

    VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程. 2013-02-20 1.数据库访问技术 a.JET与DAO JET(Joint Engine Technology)数 ...

  4. 数据库访问技术的总结 一

    以下几篇对数据库的访问技术,做一个完整的梳理,已备后来需要时查阅. 一.嵌入式SQL的处理过程 将书写的SQL语句嵌入到主语言中,主语言一般如c.c++.java等.对于这种嵌入式语言(ESQL),R ...

  5. 黑马程序员_ADO.Net 数据库访问技术

    -----------Windows Phone 7手机开发..Net培训..net学习型技术博客.期待与您交流! ------------ 1.程序要和数据库交互要通过ADO.Net进行,通过ADO ...

  6. QT数据库访问技术简介

    目录 背景介绍 功能对比 QT中数据库操作常用类介绍 用法实例 数据准备 创建实体类 创建数据库访问类 个人总结 关于如何获取数据库执行过程中的错误以及判断SQL语句执行是否成功执行 关于参数化SQL ...

  7. ADO.Net 数据库访问技术

    1.在web.Config配置文件中设置连接字符串 <connectionStrings><add name="connString" connectionStr ...

  8. C#与数据库访问技术总结(三)之 Connection对象的常用方法

    说明:前面(一)(二)总结了数据库连接的概念以及连接数据库的字符串中的各个参数的含义.这篇随笔介绍connection对象的常用方法. Connection对象的常用方法 Connection类型的对 ...

  9. C#与数据库访问技术总结(十七)

    使用DataSet对象访问数据库 当对DataSet对象进行操作时,DataSet对象会产生副本,所以对DataSet里的数据进行编辑操作不会直接对数据库产生影响,而是将DataRow的状态设置为ad ...

最新文章

  1. SQL自动审核-自助上线平台
  2. 究竟什么是云原生DevOps呢?
  3. Python编程基础11:字典
  4. VSCode每打开一次文件弹出一个git弹窗:-login -i rev-parse --show-toplevel
  5. 处理模型——找到对应一个方向的旋转角
  6. HP ProLiant DL380 G6 服务器 - 清 BIOS 的方法
  7. 不干胶设计用什么软件制作_用什么软件制作抖音短视频会比较好?
  8. 染色问题 —— 扇形涂色
  9. 发票查验、发票识别API
  10. 有谁知道win10appdata文件夹可以删除吗,删除的方法是什么
  11. 判断一个数n能否同时被3和5整除。
  12. Linux力挺微博世
  13. 浅谈强化学习二之马尔卡夫决策过程与动态规划
  14. HTML(hiden控件 readonly disabled)(maxlength属性)(id属性重点)
  15. MFC二叉树可视化绘制 (C++)—— 插入、删除、先序遍历、中序遍历、后序遍历、层序遍历(基于平衡二叉树实现)
  16. 字符串之正则表达式匹配
  17. uni-app实现扫描二维码功能
  18. 在linux中使用vi 打开文件时,能显示行号
  19. 计算机应用技术怎样为祖国做出贡献,计算机应用技术
  20. 物联网毕业设计 单片机火灾报警器设计与实现

热门文章

  1. python3爬取网易云歌单数据清洗_如何利用Python网络爬虫爬取网易云音乐歌词
  2. lnmp编译安装mysql_LNMP一键包不安装mysql | 厘米天空
  3. java 产生随机数_java生成随机数
  4. templates是什么意思_什么?噪音可以用来降温做冰箱?
  5. 计算机基础知识的知识要点,计算机基础知识要点
  6. Android获取EditText,Spinner,CheckBox,RadioButton信息Toast显示
  7. java filechooser_Java—FileChooser(示例代码)
  8. 域名绑定html网站吗,使用Coding搭建html纯静态网站后绑定域名+SSL证书
  9. restful api和普通api有什么特点_Django REST Framework教程(1): 什么是序列化和RESTful的API
  10. mysql 字符串出现问题_MYSQL 中字符串函数 归纳总结