DataRead 和DataSet区别

DataRead 和DataSet区别

dataset表示一个数据集,是数量在内存中的复苏存。 可以概括多单说明
DatSet
连接数据库时凡不面向连接的。把表全部朗诵到Sql中之休养生息冲池,并断开于数据库的连天

datareader
连接数据库时凡面向连接的。读表时,只能上读取,读毕数据后出用户决定是否断开连接。

分布式系统的多寡或者会见就此dataset做多少载体,因为dataset是保存数据的数据结构,而DataReader不担当保存数据的事,它仅负责从数据源读取数据到当地而已,它不是数据结构,而是网络通讯组件的高层封装。
DataAdapter也只是下DataReader从数据源读取数据并Add到dataset保存起来而已。假如我们单独行使DataReader也得以拿多少写入到业务类或者dataset里。那不过是基于工作需要而挑选不同的数目载体而已。实际上我们于数据库获得数据都见面通过DataReader,只不过DataAdapter把立即周都卷入起来了

dataset 和 datareader对象来啊区别?
DataSet可以离线处理,前后滚动.DataReader不可知离线处理,且是单独读的前行的,不过速度明显会迅速
DataSet可以储存数据库各种对象的,比如表触发器等,而DataReader只能存储游标记录  
DataSet可以创新回原的数据库,DataReader不行;   
DataSet可以FORWORD     PREVIUS,而DataReader只能FW;   
DataReader类似一个不得不前进的游标记录集   
DataSet叫数据集!是ADO.net相对与ADO实现断开式数据库连接性的重要性体现!DateReader是一个客户端的只是前行游标,两者的应用领域不同!读取数据后!如果一旦开展比较频繁之变更,可以行使DataSet,并且DataSet也支持串行化,可和xslt结合!进行web开发!   
DataReader则偏向吃快读取数据!针对数据量比较深之多少或者应用的越来越频繁点!
<[三]>ADO.NET提供以下简单独目标,用于检索关系数据并以该储存在内存中:DataSet和DataReader。DataSet提供一个舅存中数据的涉嫌表示形式,一整套包括部分阐明在内的数据(这些发明包含数据、对数码进行排序并约束数据),以及说明内的涉。DataReader提供一个源数据库的神速、仅上、只念数据流。

当以DataSet时,经常会利用DataAdapter(也说不定是CommandBuilder)与数据源进行相互。当用DataSet时,也可行使DataView对DataSet中之数目采取排序和筛。也可以自DataSet继承,创建强类型DataSet,用于将表明、行及排作强类型对象属性公开。

下列主题包括的音涉及:使用DataSet或DataReader的最佳时机、如何优化访问它们所蕴藏数据、以及哪优化利用DataAdapter(包括CommandBuilder)和DataView的技艺。

 

DataSet与DataReader

当设计应用程序时,要考虑应用程序所急需功能的路,以确定以DataSet或者是DataReader。

设若经应用程序执行以下操作,就要使DataSet:

r 在结果的差不多独离开散表之间开展导航。

r
操作自多单数据源(例如,来自多只数据库、一个XML文件及一个电子表格的插花数据)的数据。

r 于各国层内交换数据要用XML
Web服务。与DataReader不同的凡,DataSet能传递给长途客户端。

r
重用同样的笔录集合,以便通过缓存获得属性改善(例如排序、搜索还是筛选数据)。

r
每条记下都急需实行大气甩卖。对用DataReader返回的诸一样履进行扩张处理会延长服务被DataReader的连天的必备时刻,这影响了性。

r
使用XML操作对数码开展操作,例如可扩大样式表语言转换(XSLT转换)或XPath查询。

 

对下列情形,要于应用程序中运用DataReader:

r 不待缓存数据。

r 要拍卖的结果集太好,内存中加大不生。

r 一旦得坐单纯上、只念方式快速访问数据。

注填充DataSet时,DataAdapter使用DataReader。因此,使用DataAdapter取代DataSet提升的习性表现也节省了DataSet占用内存和填充DataSet需要之轮回。一般的话,此性能提升只是象征性的,因此,设计决策应因所需要功能吗底蕴。<[四]>

时听到有人问者题目:“在ASP.NET
Web应用程序中本身当用DataReader类还是DataSet类为?”在广大章与新闻组的贴子中我常常看到这般的误解,即当DataReader(SqlDataReader或OleDbDataReader的缩写)比DataSet好。有时候自己耶会看反的传道。事实上,Microsoft创建了这有限独数据存取类是坐它们都是咱所待的。每个接近都发出那个长和不足,你可以根据应用环境来选择用啦一个。

本文就两岸的选取问题举行了要命了解的叙述,可以于您于运用ASP.NET时,在增选DataReader类或DataSet类的端获取部分指南。在冲客户端的Windows
Form应用程序环境下,这些规则可能会见转移。我于召开这些描述时,假要你就用过DataReader和DataSet类了,并针对性它们非常熟悉。

运用DataReader类 
脚就采用DataReader类的地道条件:
你读取的多少要是初的,所以当每次用数的时,你都得从数据库读取。创建一个DataReader类不见面耗费很多内存,不过随着负荷的增加,DataSet上的性质为会见飞地加强(参考资源被Visual
Studio Magazine中之文章)。 
汝针对每行数据的需特别简短。该场面的极致好之例证就是简单地以DataReader绑定到一个Web控件,如DataGrid或DropDownList。 
您就待打数据库中盖单上的(forward-only)
、只读之款式来存取XML数据。在这种情况下,你可用SQLCommand对象的ExcecuteXmlReader()方法来博取一个XmlReader类(相当给XML版的DataReader)。这便用一个利用FOR
XML子句的SQL Server查询,或者一个暗含有效XML的ntext字段。 
而计划对数据库进行几个又的调用,来读取一多少片信息。在这种情形下,我们前面提到过的性质数据会生重复不行之增长。 
诚然,使DataSet类更强劲的大队人马效益就适用于依据客户端的Windows
Form应用程序,比如在差不多个表之间成立关系之效应。在过剩状下,DataSet类都比DataReader类更起优势,而且以多少情况下,你从来不怕不克用DataReader类。

运用DataSet类 
以脚的情状,你应有考虑下DataSet类: 你构建了一个Web
service,它利用的数目是公作返回值读取的数码。因为DataReader类必须保持到数据库的连日,所以她不克让序列化到XML中,也无可知为发送给一个Web
service的调用者。 
若待排序或筛选数据。在动用一个DataView对象(呈现为DataTable类的DefaultView属性,它蕴含一个DataSet类)来排序或筛选数据前,我们先试着用SQL查询(如WHERE和ORDER
BY语句)来促成这些意义,并使用更轻量级、更快之DataReader类。然而,有时侯用这种办法是颇的,或者当您用频繁地指向数据进行排序或筛选时便非可知用DataReader。 
本着同一请求,你得频繁遍历数据。你只能当DataReader中循环一糟糕。如果您想将大半个ServerControl类绑定到和一个数据集,那么选择DataSet就还好。DataReader类不克于绑定到差不多独ServerControl类,因为其是单纯前行读取的。在这种景象下,如果一旦动用DataReader,必须由数据库读取两差数据。 
若用仓储数据,而延续之页面请求或会见因此到的这些多少。如果数额只是叫请其的特别的人口下,你可以将DataSet类保存在一个Session变量中。如果数额足以被任何人访问,那么您可以拿其保存在一个Application变量中,或保存在Cache中(我建议用后同样种植办法,因为她支持日期限与回调(callback))。因为DataReader类必须一直打开对数据库的连天,而且它同差只能保留一行数,所以她不克当跨页面请求被给保留。 
你待对一个结实集的每个元素实现特殊之、耗时底意义。例如,如果你从一个数据库读取一排邮政编码,并想经过调用一个Web
service来获取每个地方的详实的天气状况信息,那么选择DataSet就会见重复好。这是为,当您于于是DataReader类时,在关DataReader类前,与数据库的连年不会见受放走回连接池。在数千页面请求中潜在的一个可怜粗之延时都见面招致Web应用程序的老高的访问量,从而就会损耗殆尽可用之连。相反,DataSet可以在前端读取所有的多少,并得以即时关闭及数据库的连年,将其回到到连接池,因此别的页面请求虽好用者连续了。 
卿得以一个点滴维范例中加载并拍卖XML数据。DataSet类对于XML很有因此,因为若可将DataView用于XML,对一向的数量开展排序和罗,就同处理一个数据库结果集一样。然而,需要专注的是以System.Xml名字空间被生成百上千类,你可用她用于更复杂的XML操作。 
你的数据源不是一个数据库。虽然OleDbDataReader可以用来任何OLEDB数据提供者(可能凭借于一个数据库,也或不负为一个数据库),但DataSet对象足以自一个XML文件直接加载数据,并动态地说其的schema。DataSet类为堪以XML数据形容回一个数据流或一个文本。

由地方的叙说我们就可以看到,DataSet类比较DataReader类有再度多之成效,这虽可以吃你在重多之动静下下它。但这并无代表你总是以就此DataSet类。你得在ASP.NET中落成的一定好有底任务都属DataReader的面。

尽管,毫无疑问,从主要程度要复杂程度的角度来说,DataSet类在广大ASP.NET
Web应用程序中还自在死重点之图。你可由此明智的苏存来最小化数据库往返,从而降低DataSet类的“性能损害”。DataReader和DataSet都是一个中标之ASP.NET
Web应用程序的主要的部件。重要的凡,我们得了解何时、在乌好无限好的使它。

相关文章