【编者注】是用DataReader,还是用DataSet?首先要知道他们之间的有什么异同,以及适用的工作环境有什么不同。在了解了这方面的信息后,何时用哪个,也就迎刃而解了。 以下笔者为大家提供了区分的方法。
网上收集了一下,用DataReader还是DataSet,下面的答案讲的很清楚
使用DataReader与DataSet都可以从数据源读取数据。
DataReader本身是通过 IDbCommand.ExecuteReader()方法进行构建的;
而DataSet则是通过DbDataAdapter.Fill()方法进行填充。
此外,两者的工作方式有明显的不同:
DataReader的执行过程不能脱离数据库连接,也就是在DataReader读取数据的时候不能够使用 IDbConnection.Close()方法关闭数据库连接;
而在使用DataSet获取数据时,可以断开数据库的连接,因为此时 DbDataAdapter已经负责将数据获取到应用服务器中了。
如果数据量小,网站也小,那么用哪个都无所谓,访问频繁的话就需要使用DataSet了,因为有一个连接的问题.
在网络运用中:
reader必须是在Connection下在状态才能用的,所以组件返回以DataSet为好.
这就是为什么web service允许返回dataset而不是datareader
reader会霸占连接资源,所以不是很方便的。dataset是非连接的数据库访问机制.
测试结果时DataSet要比DataReader慢一些的,差好几倍,但易用度来讲还是DataSet好一些.
二者适用的环境不一样,这要看你数据绑定的目的而定:
如果是为了单纯地显示给客户端浏览,或者只是为了在程序中对某些条件进行判断以决定程序的执行流程,那用DataReader就比较好;
如果需要对显示结果进行编辑或修改,并提交到后台数据库已保存这些改变,那就应该毫不犹豫地选择DataSet。
另外,如果dataset读取数据的过程需要连接,则可以重新进行绑定,绑定的条件可以依据客户端的选择或者根据PageIndex类似的属性一绑定,你实际需要的数据而不是整个数据表。
我个人感觉,都是向着精确化的方向发展,BT的传送文件方式,数据的小片读取,大图片文件部分读取传输技术,ajax只传送网页中需要传送的数据和接收需要接收的数据等等都是精确化的表现!
原文链接:http://www.cnblogs.com/angestudy/archive/2011/04/13/2015510.html
【编辑推荐】