简述ADO.NET(一)
ADO.NET 宏观定义
传统ADO主要针对紧密连接的客户端/服务器端系统,而 ADO.NET考虑到了断开连接式应用并且引进了 Dateset 它代表任意数量的关联表,其中每个表都包含了行和列的集合的本地副本。使用Dateset的话.在断开数据库连接的情况下调用程序集(如 web 页面或者桌面可执行程序)处理和更新它的内容.然后使用关联的数据适配器把修改后的数据提交回数据库。
ADO.NET 的三面
从概念上来说,ADO.NET类库有三种完全不同的方式来实现数据访问:连接式、断开式和通过Entity 框架。
当使用连接式的时候,你的代码需要显式连接或者断开基层数据源。用这种方式使用 ADO.NET时,通常会用到连接对象、命令对象和数据读取器对象来实现这样的数据交互。
另一方面,断开式数据访问允许通过一组DataTable对象(保存在Dataset中)来获取外部数据的一个客户端副本;当你通过相关的数据适配器对象来获取Dataset 的时候,数据连接会自动打开或关闭。你可能也猜到了,这样能快速释放连接以便其他调用者使用,也极大增加了系统的可伸缩性
一旦获取了一个DataSet后.就能在不需要花费网络流量的情况下随意修改内容。同样.如果你想把修改后的结果重新提交回数据库,需要再次使用数据适配器对象(关联一组SQL语句)来更新数据源,此时连接会为数据库更新重新打开并在结束操作后会立即被关闭。
一个数据访问API,叫做 Entity Framework (简称EF).借助 EF 可以用封装了大量数据库底层细节的客户端对象与关系型数据库交互。同样,EF编程模型还可以使用 LINQ to Entity 语法,用强类型的LINQ 查询与关系划数据库交互。
ado.net数据提供程序
ADO.NET没有提供单一对象集来和多个数据库管理系统(DBMS)进行通信.而是提供了多种数据提供程序.每种为某个DBMS进行优化,这种方法的好处是,一来能以编程方式利用DBMS独有的一些特性,二来能直接和基层的DBMS引擎进行连接而不需要为不同的DBMS做中间的映射层。
简单来说,数据提供程序是一组定义在用于和特定的数据源类型进行通信的命名空间内的一组类
型。不管你用的是哪种数据提供程序.它们都有一系列类来提供核心功能。
| AOO.NET数据提供程序的一些核心对象 | |||
| 对象 | 基类 | 实现的接口 | 作用 |
| Connection | DbConnection | IDbConnection | 连接和断开数据源,提供了相关事务对象的访问 |
| Command | DbCommand | IDbCommand | 代表SQL查询语句或者存储过程名,同样提供了相关数据读取器对象的访问 |
| DataReader | DbDataReader | IDbDataReader和IDataReader | 提供只读只向前形式的教据访问 |
| DataAdapter | DbDataAdapter | DbDataAdapter和IDataAdapter | 在数据库和调用这之间传递DataSet,内置4个命令对象来实现教据的查询、插入、修改和删除操作 |
| Parameter | DbParameter | IDataParameter和IDbDataParameter | 在参数化查询中表示参数 |
| Transaction | DbTransaction | IDbTransaction | IDbTransaction 实现数据库事务 |
尽管这些类的命名对于不同的数据提供程序不尽相同(比如SqlConnection 和OracleConnection 、OdbcConnection 和MySqlConnection )。但是它们都从相同的基类(就连接对象而言,是DbConnection)继承并且实现相同的接口(如 IDbConnection)。这样的话.一旦你掌握了一种数据提供程序的用法.学习其他的数据提供程序就非常简单了;
微软提供的ado.net数据提供程序
由定义在system.Data.OleDb 命名空间下的类组成的OLE DB 数据提供程序能让你访问所有支持基于传统COM的OLE DB协议的数据库。使用这个数据提供程序,能非常简单地改变连接字符串中的"Provider",并能和各种OLE DB数据库进行通信。
需要知道的是,其实OLE DB数据提供程序在后台调用各种COM对象来实现数据交互,这可能会影响程序的性能。基本上当某个DBMS没有对应的.NET数据提供程序时,我们才会用OLE OB数据提供程序。然而,称职的OBMS 都应该有自定义的ADO.NET教据提供程序提供下载。System.Data.OleDb应该被称为遗留命名空间
System.Data.Sqlclient命名空间包含SQL server 数据提供程序的一些类,井且提供了和OLE DB数据提供程序差不多的一些功能.但是主要的区别是它绕开OLE DB层进行访问。带来的效率显而易见。同样,SQL server数据提供程序也能很好利用DBMS的一些特性
简述ADO.NET(一)的更多相关文章
- 简述ADO中如何使用参数化的命令对象以及增删改查,存储过程的操作
连接数据库代码: private SqlConnection con = null; public void OpenConnection(string connectionString) { con ...
- 简述ADO.NET的连接层
前面曾提到过ADO.NET的连接层允许通过数据提供程序的连接.命令.数据读取器对象与数据库进行交互.当想连接数据库并且使用一个数据读取器对象来读取数据时.需要实现下面的几个步骤 * 创建.配置.打开连 ...
- 简述ADO.NET命名空间
system.data命名空间的类型 system.data命名空间的核心成员 命名空间 作用 Constraint 表示某个DataColumn对象的约束 DataColumn 表示某个DataT ...
- .net 面试题
1.列举ASP.NET页面之间传值的几种方式. 答:使用QueryString,如.../id=1;response.Redirect() 使用Session 使用Server.Transfer 使用 ...
- C#精华面试题及答案 三
PS.学了两三年的软件开发到头来发现连一些基本的东西都没掌握,通过面试题来检验自己的水平,让学习变得更加有方向性,也为将来择业而打下基础,不至于到时候手忙脚乱. 一.选择,填空题 1. 在ADO.NE ...
- C-sharp精华面试题
注:红色表示答案 一.选择,填空题 1. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C). a) ...
- .net面试题升级版
1.列举ASP.NET页面之间传值的几种方式. 答:使用QueryString,如.../id=1;response.Redirect() 使用Session 使用Server.Transfer 使用 ...
- .NET面试题(三)
第1讲:面试前期准备 1.了解相关技术职务需要的技术人才 2.准备一份出色的个人简历 第2讲:面试前期准备 ...
- 简述在ADO中使用接口的抽象数据提供程序以及ADO.NET数据提供程序工厂模型
如何在ADO中使用接口的抽象数据提供程序 在cofig中 appSettings下,配置数据连接类型 <appSettings> <!--这个键值映射到枚举值中的某个值--> ...
随机推荐
- django介绍及路由系统
第一:Python的web框架介绍 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引 ...
- 将DataRow拷贝到另一个DataRow
DataRow dr = dtPadFluid.Rows[gvPadFluid.FocusedRowHandle]; foreach (DataColumn dc in _dr.Table.Colum ...
- spring MVC 的MultipartFile转File读取
转自:http://www.cnblogs.com/hahaxiaoyu/p/5102900.html 第一种方法: MultipartFile file = xxx; Commo ...
- ueditorUE 去掉本地保存成功的提示框!
网上修改什么JS的太麻烦,这样比较暴力,仅供参考 这里直接修改的样式: ue.ready(function () { $(".edui-editor-mess ...
- Azure Web连接到Azure MySql Db
这个问题折腾了好一会,简单记录一下. 两种方式: 输入"规则名称"."起始 IP"和"结束 IP",然后单击"保存". ...
- vue+mescroll=VScrollFull
VScrollFull 介绍 这个组件是什么? 是为了方便的使用下拉刷新,上拉加载而去封装的一个依赖于 mescroll.js 的 vue 组件(未发布,文末代码~) 封装这个组件使用了什么? mes ...
- Spring Cloud,Dubbo及HSF对比
Round 1:背景 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点.阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给Apa ...
- WordPress独立下载页面与演示插件:xydown
我的博客是个资源分享的网站,所以需要提供下载,之前一直是在内容里直接添加个下载链接,感觉不是很美观,而且也麻烦,所以今天找了下看看有没有可以用的下载插件 xydown,这是一款可以独立下载页面与演示的 ...
- 推荐 | Vue 入门&进阶路线
今儿跟大家聊聊 Vue . 不得不承认, Vue 越来越受欢迎了.对比 Angular 和 React,虽然三者都是非常优秀的前端框架,但从 GitHub 趋势看,Vue 已经排在第一位,达到了13万 ...
- 我要曝光!CDN 省钱大法!
七夕节刚过去,小明却特别郁闷,因为七夕当天,他错过了和远在北京的女神表白的机会.事情的经过是怎样的呢?为了在七夕当天送给自己女神一件礼物,小明在某购物网站上花重金购买了特别的礼物,礼物是从广东发送,结 ...