• DataReader和DataSet区别


    可以使用DataReader类的对象或DataSet类的对象从数据库读取数据,但它们是有区别的,归纳起来大致有以下几条:

    1.       DataReader是数据管理提供者类,而DataSet是一般性数据类。

    2.       DataSet获取数据需要通过桥梁DataAdapter的填充,由于DataReader本身就是管理提供者,它可以通过Command的ExecuteReader()方法就可以获取数据。

    3.       DataReader是在线处理,当连接关闭后就不能读取数据;DataSet可以离线处理数据,它是把数据从数据库拷贝到本地存储,在关闭连接的情况下仍然可以在DataSet中处理数据,甚至可以在本地存储的表格中增加限制。

    4.       DataReader只能正向读取数据,但不能修改数据;DataSet可以按任何顺序读行,可以按灵活的方式搜索、排序和过滤这些行,甚至可以改变这些行,然后将这些改变同步到数据库中。

    5.       从DataReader读取数据的速度快于DataSet。

    6.       由于DataSet是离线处理,所以当在事务处理中要锁定数据库是,不可以使用DataSet。因为当DataSet被填充以后,会自动断开与数据库的连接,此时不可能再对数据库进行锁定。

    可以看出,在通常情况下,DataSet与 DataReader可能可以相互代替,当有特定要求时却需要仔细分析,到底使用哪种方式更合适。

    DataReader与DataSet最根本的区别就在于一个是在线处理,另一个是离线处理。在线时,得到的是数据库当前的真实数据,但总是在线的话,增加了网络的通讯负担。离线后数据拷贝在本地,可以减轻网络负担,程序处理数据更加方便,若离线时间过长,看到的数据就不一定是真实的数据了。

  • 相关阅读:
    作诗(si)[分块]
    【洛谷 P3469】[POI2008]BLO-Blockade(割点)
    【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)
    【BZOJ 3907】网格(Catalan数)
    【洛谷 P4211】[LNOI2014]LCA(树链剖分,差分)
    【洛谷 P2480】 [SDOI2010]古代猪文(中国剩余定理,Lucas定理)
    【洛谷 P3842】[TJOI2007]线段(DP)
    【洛谷 P2346】四子连棋(状态压缩,搜索)
    【洛谷 P1363】幻想迷宫(搜索)
    【洛谷 P1364】医院设置(树的重心)
  • 原文地址:https://www.cnblogs.com/lichaoloveliangying/p/6612579.html
Copyright © 2020-2023  润新知