分类:
2008-09-18 11:32:34
当通过Connection和Command对象与数据库建立连接并交互后,要获取访问的结果有两种方法:通过Datareader对象从数据源中获取数据并进行处理和通过DataSet对象将数据放置在内存中进行处理.
DataReader只能用来访问数据源,它实际上就是一个流式的DataSet.它与DataSet对象的主要区别在于:
DataSet对象用来将检索数据库中数据的所有结果保存在内存中,实际上,其本身就相当一个数据源.这种离线数据源,对于一些简洁的工作,如修改数据源中的数据,转换数据格式等,,是相当有用的.但是如果需要从数据库中返回大量的数据,必将受到内存的限制,因为整个DataSet对象都被保存在内存中.
同时,如果此时有成千上万的用户同时访问这个数据库,可以想象,内存将会被过度使用,出现无法预料的问题.而DataReader对象每次只将返回结果中的一条记录保存至内存中,从而避免了使用大量内存,大大提高了性能.
必须注意的是:DataReader对象返回的结果仅仅是一个只读的,仅向前的数据流.
如果没有使用数据绑定,并且数据的更新都是都是通过手写的SQL语句或存储过程来实现的,那么可以考虑使用DataReader对象.DataReader对象的实现是通过创建一个数据库连接和一个在该连接上的Command对象,调用该Command的ExeceteReader方法来创建的.而使用DataSet,它就必须借助DataAdapter来实现与实际数据源之间的桥梁.实际使用中,个人认为DataReader和DataSet都可以使用,个人习惯就是了.
[@more@]