DataReader和DataSet的区别

ADO.NET提供两个用户检索关机数据的对象:DataSet和DataReader
DataSet与DataReader的区别
1.数据库连接
DataSet连接数据库是非面向连接,把数据全部读到内存并断开与数据库的连接,此时其他操作可以使用SqlConnection连接对象。
DataReader连接数据库是面向连接的。只能向前读取,且会一直占用SqlConnection连接,在其获取数据过程中其他操作不可以再使用SqlConnection连接对象,读完数据后用户决定是否断开连接
2.处理数据速度
DataSet读取、处理速度较慢
DataReader读取、处理速度较快
3.更新数据库
在对DataSet数据集中的数据更新后可以把数据更新回原来的数据库,DataReader不行
4.支持分页排序
DataSet支持分页、动态排序等操作,DataReader中没有分页、动态排序功能
5.占用内存
DataSet:由于DataSet是一次读取所有数据到内存,因此内存占用较大,但是提高了灵活性,在断开数据库连接情况下可以对修改数据并写回数据库
DataReader:每次只读取一行记录,占用内存较小。
6.获取机制
DataReader通过IDbCommand.ExecuteReader来读取数据
DataSet通过DbDataAdapter.Fill填充数据
总结:
如果数据只是用来填充或者绑定控件并不需要排序或分页功能则可使用DataReader,如果数据绑定控件需要提供排序或者分页功能则必须使用DataSet。

原文地址:https://www.cnblogs.com/ecosu/p/4286010.html