简述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> <!--这个键值映射到枚举值中的某个值--> ...
随机推荐
- 做个流量站-聚茶吧, 汇聚"茶"的地方
犹豫了好久,终于下定决心,做一回个人站长了,虽然没啥经验,但毕竟也是IT科班出身了,准备用一年的事件摸索一下内容站和SEO,看看能否积累点经验,赚点小钱. 推酷-靠爬虫起家的内容站 做内容站,站长们都 ...
- 用 PHP文件引入css样式
html: <link rel="stylesheet" type="text/css" href="http://www.mysite.com ...
- 排查MongoDB CPU使用率高的问题
1.公司业务调整,把一部分数据由Redis转至MongoDB,业务在测试环境正常,生产环境上线后发现压力一上来MongoDB的服务直接把CPU占满了,和开发的同学分析了一下也参考了一下百度上类似的问题 ...
- Tomcat简单优化
解决 有两种解决办法: 1)在Tomcat环境中解决 可以通过配置JRE使用非阻塞的Entropy Source. 在catalina.sh中加入这么一行:-Djava.security.egd=fi ...
- git mvn 使用
git 更换远程仓库地址: stps:先删除远程仓库地址,然后再添加 [git remote rm origin] 删除现有远程仓库 [git remote add origin url]添加新远程仓 ...
- 使用BurpSuite进行双文件上传拿Webshell
首先进入网站后台:(后台界面应该是良精CMS) <ignore_js_op> 在 添加产品 这一栏有个上传文件: <ignore_js_op> 选择一个*.jpg格式的图片进行 ...
- [Swift]LeetCode467. 环绕字符串中唯一的子字符串 | Unique Substrings in Wraparound String
Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...
- [Swift]LeetCode496. 下一个更大元素 I | Next Greater Element I
You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of n ...
- [Swift]LeetCode518. 零钱兑换 II | Coin Change 2
You are given coins of different denominations and a total amount of money. Write a function to comp ...
- 使用Task
http://www.cnblogs.com/Charltsing/p/taskpoolthread.html task默认对线程的调度是逐步增加的,连续多次运行并发线程,会提高占用的线程数,而等若干 ...