简述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> <!--这个键值映射到枚举值中的某个值--> ...
随机推荐
- 用挂载,使用NTFS移动硬盘,拷贝iPhone里的照片,拷到MAC
2. 写权限挂载移动硬盘 1) mount查看 2) diskutil umount /dev/disk2 3) sudo mount_ntfs -o rw,nobrowse /dev/disk2s1 ...
- K8S 安装 Wordpress
基本概念 Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现.共享和使用为Kubernetes构建的应用,它包含几个基本概念 Helm是目前Kubernetes服务编排领域的唯一 ...
- springmvc的日期类型转换
springmvc的日期类型转换 # spring mvc绑定参数之类型转换有三种方式: ## 1.实体类中加日期格式化注解 @DateTimeFormat(pattern="yyyy- ...
- kali linux 网络渗透测试学习笔记(二)OWASP ZAP工具扫描SQL injection漏洞失败
按照惯例,利用OWASP ZAP工具扫描SQL injection漏洞时,应该很快就可以扫描出来,但是在笔者进行扫描的时候,却遇到了以下状况: 这说明了该工具根本就没能够扫描出SQL注入的漏洞,不知道 ...
- 详解AMD规范及具体实现requireJS在工程中的使用
前面的话 由CommonJS组织提出了许多新的JavaScript架构方案和标准,希望能为前端开发提供统一的指引.AMD规范就是其中比较著名一个,全称是Asynchronous Module Defi ...
- Java并发编程基础之volatile
首先简单介绍一下volatile的应用,volatile作为Java多线程中轻量级的同步措施,保证了多线程环境中“共享变量”的可见性.这里的可见性简单而言可以理解为当一个线程修改了一个共享变量的时候, ...
- 分享13道上海尚学堂拿回来的Java面试真题,这些都是Java核心常见问题,想拿OFFER必看!
上海尚学堂Java培训学员参加面试带回来的真题,分享出来与大家,希望大家能认真地看看做一遍.后面有详细题解答案,对照下,看看自己做得怎么样,把这些面试遇到的真题全部掌握,做好面试笔试前的准备. 一.1 ...
- [Swift]LeetCode639. 解码方法 2 | Decode Ways II
A message containing letters from A-Z is being encoded to numbers using the following mapping way: ' ...
- DMA的基本概念
DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统.每一种体系结构DMA传输不同,编程接口也不同. 数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输. 在第一 ...
- 数据攻略●R语言自述
(注明:以下文章均在Linux操作系统下执行) 一.R语言简介 R语言是用于统计分析,图形表示和报告的编程语言和软件环境.R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大 ...