日期:2014-05-17  浏览次数:20449 次

用DataReader 比DataSet效率要高吗?为什么?那分别在什么时候用好?
用DataReader 比DataSet效率要高吗?为什么?那分别在什么时候用好?

------解决方案--------------------
可以将DataSet看作一个离线的数据库,将数据库中的数据在内存中作映射。当你有很多客户端来访问同样的数据时,你可以让这些客户端从DataSet中读取数据。DataReader操作时,需要将Connection对象打开,与数据库保持连接,它与DataSet相反过来,它还的特点就是只读向前,所以当你读取很量数据时,可以使用DataReader。

前者DataSet是用来从数据库中读取数据的.面后者DataReader是用来接受读出来的数据并进行保存在内存中.前者DataSet一但读完.数据就不能再访问,后者DataReader是可以较持久访问的.而且还可以把它当作数据表一样做很多的查询运算.
在一般的状况下,DataReader 的速度不仅比 DataSet 来得快,在 IIS 服务器上所使用的内存也较少。因为DataReader 每次只是读取一行数据到内存中.。我们的建议是,如果您的数据来源控件只是用来填入控件的清单成为其选项,亦或是您的数据绑定控件并不需要提供排序或分页功能的话,则应该使用 DataReader。反之,如果您的数据绑定控件需要提供排序或分页功能的话,则必须使用 DataSet 并承担其各项负面效应。
DataReader
速度较快
不支持快取、分页与动态排序。
DataSet
支持快取、分页与动态排序
速度较慢