蓝色生死恋11集 - 百度:DataReader vs DataSet—哪一个更适合你

来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 06:01:46

DataReader vs DataSet—哪一个更适合你
在微软发布Microsoft .NET Framework之前,程序员访问数据库数据的选择并不多。那时候,我们常常ADO Recordset来保存查询结果和数据内容。最初,ADO Recordset要求一个恒定的数据库连接来维护对数据的访问。但随着时间的推移,它的功能逐步增强,现在它即支持离线应用程序又能够对扩展标记语言(eXtensible Markup Language,XML)提供部分支持。

  ADO.NET的发布提供了一个新的数据检索对象模型。目前,它提供了两个用于获取检索结果的数据类以及其它用于保存各种数据内容的类。由于大多数程序员已经习惯于只使用Recordset,这就导致了这样如下两个疑问:为什么在Microsoft.NET提供两种数据检索类(DataReader和DataSet)以及哪一个类最好用。

  你可以利用如下信息来帮助你判断哪一种数据查询方法最符合你的目的。 在如下场合下考虑使用DataReader:
1、当应用程序要求优化只读以及前向数据访问(如绑定DataGrid控件)时,DataReader是一个更好的选项。当数据从DataReader“卸下”来时,就关闭连接,这对提供程序的性能有帮助。
2、当你打算重复性的检索少量数据或者你检索的数据在每次使用数据时它们都需要尽可能的更新时,最好使用DataReader。  在如下场合下考虑使用DataSet:
1、如果应用程序不是立即“卸载”查询结果时,或者有大量的处理(如两次数据访问之间的事务逻辑处理)时,最好使用DataSet 。DataSet检索数据后,将检索结果存放到内存中去,并同时把连接返回到数据库连接池中,这样DataReader可以在处理完成之前
2、持连接锁定在开启的状态。这个特性会非常容易的导致高流量的应用程序耗尽所有可用的数据库连接。
3、当你需要多次操作数据时,最好使用DataSet。例如,当多个控件需要获取同样的数据时,使用DataSet就比DataReader更加合适。这是因为后者只能读一次,这样一个DataReader只能对应一个控件,每个控件就要求进行一次数据检索。
4、当数据的变化不是很频繁(即不要求每次使用数据时都从数据库从新检索它以保证它获得及时的更新)时,最好使用DataSet。DataSet可以保存在一个会话(Session)或者程序变量中,它也可以用System.Web.Caching.Cache类进行缓冲,这样由于降低了从数据库直接检索数据的次数,应用程序的性能会有所提高。
5、当建立返回检索数据的Web服务时,最好使用DataSet 。由于DataSet是可串行化的,因此它可以作为返回值。而DataReader由于需要连续的数据库连接,因此它不能作为Web服务的返回值。
牢记这两个数据查询类——这一点很重要。这两种方法所针对的目标截然不同。 
本文转摘自『蓝派网』http://www.lan27.com/Article/200705/931.htm