因为她在学校做的项目全都是DataReader,
而我用的全是dataSet,然后和她在网上查有一个人说dataReader比dataSet快(我当时真恨死这个人了)
那个女孩还很骄傲的说了一句:你看,是吧!
真是丢死人了,
大家在什么情况下用dataReader?(别说什么数据不在反复操作下,我要听比如列表之类的东西)
datareader比dataSet强在哪儿,
XX的
而我用的全是dataSet,然后和她在网上查有一个人说dataReader比dataSet快(我当时真恨死这个人了)
那个女孩还很骄傲的说了一句:你看,是吧!
真是丢死人了,
大家在什么情况下用dataReader?(别说什么数据不在反复操作下,我要听比如列表之类的东西)
datareader比dataSet强在哪儿,
XX的
Sqldataread优点:读取数据非常快。如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多。缺点:直到数据读完才可close掉于数据库的连接。
Dataset是把数据读出,缓存在内存中。缺点:对内存的占用较高。如果对返回的数据需做大量的处理用Dataset比较好些可以减少对数据库的连接操作。优点:只需连接一次就可close于数据库的连接。一般情况下,读取大量数据,对返回数据不做大量处理用SqlDataReader.对返回数据大量处理用datset比较合适.对SqlDataReader和Dataset的选择取决于程序功能的实现。
以上内容仅供参考
dataset就比较强大了,能做很多事情,把数据都取到内存里.
DataReader要与库时刻的连接读取,不占用内存的空间 但是对整体的处理不好!各有所长 我水平有限也说不太好,大概意思吧!~
DataReader要与库时刻的连接读取,需要通过网络传输数据
大量数据的情况下应该dataset快。
就好比从上海出发去北京,那么你是自己坐火车去,还是去旅行社报名跟着旅行团去呢?
显然这两种方法都可以达到你的目的,但过程完全不一样。
如果你是要旅行,当然可以跟着旅行团去,但如果你只是要去北京办事,当然是自己坐车去了。
DataReader和DataSet也同样的,虽然他们都可以读取数据,但DataReader就好比自己坐火车去,而DataSet就好比跟团去。
如果你只是要显示数据,DataReader当然要比DataSet效率高,这就好比你为了去北京出差不会去旅行团报名一样。
但如果你要对数据进行复杂操作处理,当然要选择DataSet,因为DataReader办不到。
所以,他们之间没有什么对比关系,按需选择。
[仅代表个人观点]
DataReader 但只能是向前,必须是独占的,它常用来检索数据时用,比如,绑定DropDownList.
取单值时,DataReader 效率比较高.并且通过索引取值最快.如:dr.getString(0)
但分页时不行,在.net2.0通过转化可以实现分页.
但是为什么依然有那么多人用正规表达式?
因为正规表达式容易用.同样DataSet有它的优点.
例如DataReader不可以缓存.
而DataSet就可以.所以,不能单说DataSet快还是DataReader快.所以有些时候, 用DataSet的代码, 就会比用DataReader的代码快----
其实标题那个问题,严禁地表达,应该是指 SqlCommand到DataReader到读取一次数据快 , 还是SqlDataAdapter到DataSet到读取一次数据快.
但是如果数据处理之类的话,这些做3年,用哪种的利弊,就应该要很清楚了。
要反思下了,楼主,呵呵
你三年白活了.
因为前者是只读的.这个是很明显区别.
三年了都不知道 dataset和dataread的区别 速度差别
另外,如果只要在单个数据控件中显示数据库查询的结果,而不去处理那些数据,因为只是从数据库端来到本地就可以,而不用返回数据库,所以用SqlDataReader对象是完成该功能的最理想方法。
使用datareader读取数据时内存中仅存在下一条待读记录,因此也只能顺序读取。
而dataset是把整张表都装入内存之后检索,时间比较长一些。
我认为差别主要在是否与数据库保持连接上,根据不同的需求使用。
都不要用dataset
DataReader要与库时刻的连接读取,取决于网速
dataReader是一个之读数据提供器,也常用作绑定数据源。而DataSet是将数据保存到内存中,允许对内存中的数据进行操作,然后再反映到数据库中,但有一个前提,那就是读出数据之后在较短的一段时间内会有数据操作的请求,否则还是建议使用dataReader。
dataReader在Web项目中使用比较频繁,而dataset在桌面应用程序中经常使用。因为web项目中从数据库获取完数据,render到page页面,往往还要等client端的用户发出操作命令才会对数据进行修改,也就是在render页面之前,只读的数据就能满足要求。在桌面应用程序中使用dataset可以减少程序与数据库的交互次数,而且可能操作往往是在读取数据之后进行的。 相信楼上有很多朋友是从事asp .net开发的吧,对dataReader的理解肯定会深刻些。
-----------------------------
哪个客户有这么NB,能在一个页面里处理成千上万的数据
这种假设是不符合现实需求的吧
------------------------------------------
我很少BS人的,但我这次非要BS LZ一下,看到“三年”这两个字,真是刺眼
要加工 用 dataset 罗
DataReader尽管消耗少,但要占用数据库连接,但高并发环境的读数据库操作、控件数据绑定和配合连接池提高性能上它就是个宝贝!
其实没有高下之分,只有在适合的地方用合适的对象才是王道!
但是set能做的事情有很多Reader做不了
推荐用 IList<T>
强类型 用代码生成器初始化T