炒外汇收的是美金吗:8.2 非连接的数据

来源:百度文库 编辑:中财网 时间:2024/05/09 06:45:10

8.2 非连接的数据

到目前为止,你所见到的所有示例都使用了ADO.NET基于连接的特性。采用这种方式时,只有数据读取后数据才会和数据源断开连接。代码需要负责追踪用户活动、保存信息并确定何时创建和执行新的命令。

ADO.NET通过DataSet对象强调了另外一种完全不同的理念。连接数据库时,用从数据库中获得的信息的副本来填充DataSet。如果修改了DataSet中的信息,数据库中相应表的信息并不会随之改变。也就是说,处理和操作数据时不用担心正在使用的珍贵的数据库连接。如果需要的话,还可以重新连接原来的数据源,通过一个批操作把DataSet中数据的修改应用到表中。

当然,这样的便利并非没有缺点,比如并发性问题。根据应用程序设计的不同,一批更新可以在一起提交。某项错误(如试图更新其他用户正在更新的记录)会使整个更新失败。谨慎的编码可以让应用程序远离这些问题--但是需要额外的付出。

有些时候,你会乐意使用ADO.NET的非连接模型以及DataSet。某些场景中DataSet比DataReader更便于使用,包括下面这些情形。

需要一个方便的包以便在组件间传递数据(例如,在组件间共享信息或者通过Web服务向客户分发信息)。

需要一个方便的文件格式将数据串行化后保存到磁盘上(DataSet包含一个内建的功能可以将自己保存到XML文件中)。

需要在大量的数据中前后浏览。例如,可以使用DataSet支持分页的列表控件每次只显示一部分信息。DataReader只能往一个方向移动,即向前移动。

需要在不同的表间导航。DataSet可以保存所有这些表以及它们的关系。因此,使用DataSet可以创建一个主-从页面而不需要多次到数据库执行查询。

需要通过用户界面控件绑定数据。你也可以使用DataReader进行绑定,但因为它是唯进的游标,所以它不可以同时绑定到多个控件上。同时,它还不能像DataSet一样对数据进行自定义排序或按条件过滤。

需要以XML方式操作数据。

需要通过Web服务提供批量更新。例如,可以让客户端下载一个包含大量行的DataTable,客户端做了多个修改后再向服务器提交。在这样的场景中,Web服务可以通过一次操作就实现所有的更新(假设没有冲突发生)。

在本章后面的几节中,你将学习如何把获取的数据放到DataSet中。你还将学习如何从多张表中获取数据,如何为这些在内存中的表建立关系,如何排序和过滤数据,如何查找特定记录;不过我们不介绍如何使用DataSet来执行更新,因为ASP.NET模型有更好的控制命令的方法,这将在下一节介绍。