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设置出来分页排序等页面面显示效果。

原文地址:https://www.cnblogs.com/IcreamPrince/p/2622142.html