浅析VS2005数据存取层*

2010-09-09 08:02叶文胜满学璐
黄冈职业技术学院学报 2010年4期
关键词:适配器表单数据源

叶文胜,满学璐

(黄冈职业技术学院,湖北黄冈438002)

浅析VS2005数据存取层*

叶文胜,满学璐

(黄冈职业技术学院,湖北黄冈438002)

对Visual Studio 2005的数据存取层进行分析,从而实现在此基础上进一步编辑和扩展此代码。Visual Studio 2005中提供了大量的向导──特别是在生成数据存取代码方面;这些向导大大减少了代码的编写量。

数据存取层;表单;数据控件;向导;数据库;连接;代码

基于最新的Visual Studio 2005数据设计器,可以通过用户驱动的向导来创建代码。但是,在点击“Finish”按钮后得到的代码中往往包含了比以前版本中更多的抽象内容。在此基础上,只需使用例如表格适配器和类型化的数据集等顶层对象,最终得到的却是一个更简单、更好的中间层。更重要的是,你可以选择把这个顶层API连接到自己的数据存取层,从而完成一个正规化多层系统。

在任何情况下,都应该避免把大量的ADO.NET相关的表单代码插入到ASP.NET页面和Windows表单事件的code-behind中,应坚持使用分层设计,并使用数据传输模式和有效的数据描述方式。但是,Visual Studio能够提供数据集并自动生成ADO.NET代码。另外,Visual Studio 2005还能够为你提供数据集和定制对象并能自动生成一个能进行大幅定制的抽象层。

1 构建一个数据驱动的Windows表单

建一个基于表单的应用程序,它能够显示并编辑来自Northwind数据库多个表格的数据。表单上有一些数据绑定控件,还有几个数据连接器控件。首先要添加BindingNavigator控件以便让用户在一个绑定数据源记录中进行导航。这个BindingNavigator控件有一个类似于VCR的用户接口,它仅负责从数据源选择一个特定的记录并使之可应用于一个通用的编程接口。这个BindingNavigator控件不会抛出任何异常。绑定源组件的设计目的主要是为了简化表单上的控件和绑定数据之间的绑定。另外,它还提供了许多其它类型的服务(如当前状态管理,改变通知,过滤等)。如前面提及,一个绑定源组件其实是在用户接口元素和后端数据之间添加了一个间接层。你需要把该绑定源组件连接到一个物理数据源,然后把表单上的控件绑定到该绑定源。从这里开始,任何与数据源相关的数据交互都是通过这个绑定源实现的。典型的操作包括导航、检索、排序、过滤和更新。实际上,.NET框架2.0中的一个绑定源组件是一个派生自类Binding-Source的类的实例。这种绑定源组件其实就是一个没有用户界面的组件,专门设计用于让开发者从Visual Studio 2005内部管理绑定对象,并且多数是以声明方式实现的。

2 BindingSource类

BindingSource类负责包装一个数据源并通过自己的对象模型来表示该数据源。该基类有很多属性,读者可以找相关资料查阅。值得注意的是, BindingSource对象的设计目的是既用来管理简单的数据绑定也应用于复杂的数据绑定场所。这意味着,它合并了.NET框架1.x中CurrencyManager和PropertyManager的所有功能。为了实现这些功能并且使它们快速而容易地出现在用户接口级,你可以使用BindingNavigator控件并且把它关联到一个绑定源上。每当用户点击类似于VCR的按钮,绑定源上的 Position和Current属性被更新并且激发CurrentChanged事件。就象在WindowsForms 1.x时期的数据绑定一样,监听这些事件的控件接收通知并且能够适当更新各自的用户接口。

3 把数据源导入Windows表单应用程序

为了把数据添加到Windows应用程序,你首先要把一个BindingSource组件拖动到你的表单。然后,设置该组件的DataSource属性。该组件存在许多可用的数据源,包括数组、集合和定制类型列表。典型情况下,列表都是在集合的基础上扩展而成的,它们要实现下列任何接口:IBindingList,ITypedList或IListSource。在最开始,你的应用程序没有数据源—你必须要为之创建一个。当你选择BindingSource组件的DataSource属性时,会遇到一个窗口,点击弹出窗口底部的链接,从而启动一个向导以便把一个新的数据源添加到当前工程。

此向导中,Visual Studio 2005会询问应用程序想从哪里得到数据。存在三个可能的地方:

数据库,外部Web服务或定制对象。如果你选择了Web服务,那么,Visual Studio 2005将打开“Add Web Reference”对话框以便让你选择使用一个本地的还是远程的Web服务并且创建相应的代理类。然后,将由你来检索数据并且把它绑定到控件。同样,你可以从工程引用的任何程序集内选择一个定制对象。

定制对象集合或Web服务的创作者负责设计并且使用他们喜欢的任何方法来实现对象模型。当你选择该数据库选项时,Visual Studio 2005会为你生成大量的代码。典型地,你需要添加一个DataSet组件,也即是通过一个XSD文件描述的一组相互关联的表格。这个DataSet组件描述了一个具有一个或多个数据表格的内存DataSet对象。

4 表格适配器(TableAdapter)

一个表格适配器为一个应用程序与它的数据库之间的通信提供支持。例如,一个表格适配器连接到一个数据库并且执行命令;任何返回的数据被存储到一个DataTable对象中以备进一步处理。可以使用一个表格适配器来把更新内容发送回数据库。一个表格适配器是一个工具生成的类的实例。一个表格适配器只是在.NET托管的提供程序内定义的适配器类的一个特例。简言之,它是一个担当针对特定表格的适配器的包装器对象。注意,表格适配器没有基类。从内部实现来看,一个表格适配器类合并了一个SqlCommand,SqlConnection和Sql-DataAdapter对象的功能。表格适配器类是用于实现数据存取的流行设计模式中的非常重要的元素之一。借助于CommandCollection属性,表格适配器类能够列出在表格上执行的所有行为。简言之,它定义了表格的“行为”。

5 应用范例

一个表格适配器为一个应用程序与它的数据库之间的通信提供支持。例如,一个表格适配器连接到一个数据库并且执行命令;任何返回的数据被存储到一个DataTable对象中以备进一步处理。

一个表格适配器类典型的定义形式如下:

内部数据适配器是在 InitAdapter方法中初始化的。该方法是从Adapter属性的get存取器内进行调用的。

6 总结

Visual Studio 2005提供的数据设计器向导生成的代码基于经典的TDG方法进行工作。使用向导的关键在于真正了解它相对你的需要实现了什么。Visual Studio 2005数据设计器创建了一种结构化的有效的DAL,程序员必须理解它的代码并着手编辑,但这种模式不适合复杂的应用程序开发。

[1]John KauffmanBradley.Asp.net 2.0数据库入门经典[M].清华大学出版社,2007.

[2]吴雷.Visual Studio 2005高级编程[M].清华大学出版社,2008.

[3]魏菊霞.asp.net实践教程[M].清华大学出版社,2009.

Analysis Data Access Layer of VS2005

YE Wen-Sheng,MAN Xue-Lu
(Huanggang Polytechnic University,Huanggang438002Hubei)

Analyzing the data access layer of the Visual Studio 2005 in order to achieve further editing and expansion of this code on the above basis.Visual Studio 2005 provides a number of wizards──especially in the generated data access code area,and the wizards significantly reduces the written amount of code.

Data Access Layer;Form;Data Control;Wizard,database;Connection;Code.

TP311.52

A

1672-1047(2010)04-0044-03

10.3969/j.issn.1672-1047.2010.04.12

[责任审校:秦春娥]

2010-05-27

叶文胜,男,系统分析师。E-mail:ywshgzy@hgpu.edu.cn.

猜你喜欢
适配器表单数据源
电子表单系统应用分析
浅谈网页制作中表单的教学
Web 大数据系统数据源选择*
基于3D打印的轻型导弹适配器
新型水文测验GPS适配器设计与应用
基于不同网络数据源的期刊评价研究
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
美国麦格普公司新型M—LOK相机三脚架适配器
基于真值发现的冲突数据源质量评价算法
分布式异构数据源标准化查询设计与实现