全球旧事资料 分类
更快的DataReader类。然而,有时侯用这种方法是不行的,或者当你需要多次地对数据进行排序或筛选时就不能用DataReader。针对同一请求,你需要多次遍历数据。你只能在DataReader中循环一次。如果你想将多个ServerCo
trol类绑定到同一个数据集,那么选择DataSet就更好。DataReader类不能被绑定到多个ServerCo
trol类,因为它是只向前读取的。在这种情况下,如果要使用DataReader,必须从数据库读取两次数据。你需要存储数据,而后续的页面请求可能会用到的这些数据。如果数据只被请求它的专门的人使用,你可以将DataSet类保存在一个Sessio
变量中。如果数据可以被任何人访问,那么你可以将它保存在一个Applicatio
变量中,或保存在Cache中(我建议使用后一种方法,因为它支持时间期限和回调(callback))。因为DataReader类必须一直打开对数据库的连接,而且它一次只能保存一行数据,所以它们不能在跨页面请求中被保存。你需要对一个结果集的每个元素实现特殊的、耗时的功能。例如,如果你从一个数据库读取一列邮政编码,并想通过调用一个Webservice来得到每个地区的详细的天气状况信息,那么选择DataSet就会更好。这是因为,当你在用DataReader类时,在关闭DataReader类前,与数据库的连接不会被释放回连接池。在数千页面请求之间潜在的一个很小的延时都会造成Web应用程序的很高的访问量,从而就会消耗完可用的连接。相反,DataSet可以在前端读取所有的数据,并可以
f马上关闭与数据库的连接,将它返回到连接池,因此其它的页面请求就可以用这个连接了。你需要在一个两维范例中加载并处理XML数据。DataSet类对于XML很有用,因为你可以将DataView用于XML,对根本的数据进行排序和筛选,就同处理一个数据库结果集一样。然而,需要注意的是在SystemXml名字空间中有很多类,你可以将它们用于更复杂的XML操作。你的数据源不是一个数据库。虽然OleDbDataReader可以用于任何OLEDB数据提供者(可能指向一个数据库,也可能不指向一个数据库),但DataSet对象可以从一个XML文件直接加载数据,并动态地解释它的schema。DataSet类也可以将XML数据写回一个数据流或一个文件。从上面的讲述我们就可以看到,DataSet类比DataReader类有更多的功能,这就可以让你在更多的情况下运用它们。但这并不意味着你总是在用DataSet类。你需要在ASPNET中完成的相当大一部分的任务都属于DataReader的范畴。尽管如此,毫无疑问,从重要程度或复杂程度的角度来说,DataSet类在很多ASPNETWeb应用程序中都起着很重要的作用r
好听全球资料 返回顶部