zoukankan      html  css  js  c++  java
  • DataSet与DataReader的区别

    DataReader和DataSet最大的区别在于 DataReader使用时始终占用着SqlConnection,在线操作数据库,因此任何对SqlConnection的操作都会引发DataReader的异常

    由于DataReader每次只在内存加载一条数据,所以占用的内存很小,因此具有特殊性和高性能。DataReader只是向前读的,读了第一条数据之后就不能再读第一条。而DataSet则是一次性将数据加载在内存中,读取完毕后即断开数据库连接(离线式),由于DataSet一次性将数据加载在内存中,因此比较消耗内存

    为了区分更加明了,将其列为一下几个小点

    ■与数据库连接

    DataSet连接数据库时是非面向连接的,把表全部读取到Sql的缓冲池,并断开于数据库的连接

    DataReader连接数据库时是面向连接的,读表时,只能向前读取,读完数据后由用户决定是否要断开连接

    ■处理数据速度

    DataSet读取、处理速度较慢

    DataReader读取、处理速度较快

    ■更新数据库

    在对DataSet数据集中的数据进行更新后,可以把数据更新回原来的数据库

    在对DataReader中的数据进行更新后,没有办法进行数据库更新

    ■支持分页排序

    在DataSet中支持分页、动态排序等操作

    在DataReader中没有分页、动态排序的功能

    ■占用内存

    DataSet在IIS服务器上所使用的内存较多

    DataReader在IIS服务器上所使用的内存较少

    综上所述得出DataSetDataReader有各自适用的场合。如果数据来源控件只是用来填入控件的清单成为其选项,或者数据绑定控件并不需要提供排序或分页功能的话,则应该使用 DataReader。反之,如果数据绑定控件需要提供排序或分页功能的话,则必须使用 DataSet,通过DataSet设置出来分页排序等页面面显示效果。

  • 相关阅读:
    ZOJ 2587 Unique Attack (最小割唯一性)
    POJ 2987 Firing (最大权闭合图)
    POJ 2987 Firing (最大权闭合图)
    POJ 3469 Dual Core CPU (最小割建模)
    POJ 3469 Dual Core CPU (最小割建模)
    UVA 11426 GCD-Extreme(II) ★ (欧拉函数)
    UVA 11426 GCD-Extreme(II) ★ (欧拉函数)
    HDU 4612 Warm up (边双连通分量+DP最长链)
    HDU 4612 Warm up (边双连通分量+DP最长链)
    hdu5531 Rebuild
  • 原文地址:https://www.cnblogs.com/IcreamPrince/p/2622142.html
Copyright © 2011-2022 走看看