如果需要快速的读取数据并显示出来,推荐采用DataReader。
如果需要对数据进行大量的修改,还有大量并发访问的可能,而且不需要实时的跟踪数据库的变化,推荐采用DataSet。

解决方案 »

  1.   

    DataReader is associated with the Connection object, you should use it if all the operations are local, since it is kind of awkward to pass DataReader across layers or tiers (considering dependencies and scalability)DataSet is a more generic data structure, more suitable to pass across layers/tiers
      

  2.   

    一般来说,对于 ASP.NET 应用,使用 DataReader 较妥,相对于 DataSet,DataReader 更轻量。而 ASP.NET 应用一般是无状态的,每次往返都要刷新,使用 DataSet 没有什么明显的好处,如果是大数据集则更可能会影响性能。但正确使用了状态管理功能,DataSet 可以应用在不经常修改的常用数据。具体的用法,请参阅 MSDN 的有关“数据访问策略建议”的文章。
      

  3.   

    1.data reader 是跟connection 相关的。而dataset 是无连接的。是ado.net的最新数据访问方式。可以实现无连接。减少数据库的资源占用。
    2.data reader 相当于asp中的recordset
    3.如果作为中间层,显示data reader 不能胜任。你看一下web service的调用。对应全是data set
      

  4.   

    我使用DataTable返回自己想要的表就行了
    不必为用户层返回一个庞大的dataSet
    对数据库的操作要通过中间层来完成
    要是直接通过dataSet完成了
    中间层就没有办法控制了
    然后中间层在选择通过dataSet或是sql语句操作数据库
    我就是这么做的
    个人意见仅供参考
      

  5.   

    同意 lcy5415(asp.net)
    我刚开始学.net的时候,datagrid的分页本来想用datareader为数据源的(因为他快嘛),但是不行,得用dataset。table[n].dataview  用datareader的错误是不支持icollection 接口学了一段时间,知道要考虑效率了,如果数据非常多,分页用自定义分页,数据源用datareader了两者都要用~ 视具体情况而定,各有个的好处~这要看你自己了
      

  6.   

    这个不绝对,要看你具体的应用了,如果一般的几个字段的值或者IList可以用DataReader,如果是复杂的,比如绑定到需要多次操作的DataGrid则需要DataSet。
      

  7.   

    我觉得为了降低偶合度,还是DATATABLE或者DATASET这样的更好吧?
      

  8.   

    DataReader 既然能存在就在于它有自己优势: "快速,轻量" . 有资料说 DataReader 比 DataAdapter 快 15-30% .
      

  9.   

    但我一真感觉用DataReader 好像就不是三层结构了,因为是在表示层读的数据.
    所以老是感觉不太对劲!
      

  10.   

    一个微软员工的见解
    http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/petshop.mspx
      

  11.   

    在3层结构中有要求,表示层不允许跳过中间层直接访问数据。如果你用READER,建议还是通过业务层导一下,在调用数据层,由于.NET中存在READER,所以并不能说READER不好,在一些中小的系统中,DATAREADER可以及时的反映出数据,并且,如果在银行系统,READER的应用就很高,因为不可能把一个有上亿行记录的表读入DATASET的。