IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

探索 Visual Studio .Net 中的 DB2 Data Connections

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Abdul Al-Azzawe, DB2 开发工具架构设计师, IBM 旧金山

2003 年 8 月 01 日

NET 开发人员将浏览 IBM Explorer for Visual Studio .NET,并了解使用这一集成应用程序开发环境来访问服务器目录以及开发 DB2 的 ADO.NET 应用程序是多么的容易。

重要提示:在阅读本文前,请先阅读 免责声明

编者按:用于 Visual Studio .NET 的 IBM DB2 开发外接程序可从 DB2 .NET 支持 beta 测试版 2 获得, 在推出 DB2 V8.1.2 时,它也可作为该包的一部分而获得。

简介

IBM DB2 工具Microsoft® Visual Studio .Net 正在快速地发展成 Windows® 平台上的关键集成软件开发环境。用于 Visual Studio .Net 的 IBM® DB2® 开发外接程序(IBM DB2 Development Add-Ins for Visual Studio .Net)是特别为 DB2 Universal Database™(UDB)设计的一套紧密集成的应用程序开发和管理工具。DB2 扩展的主要目标 是在 Microsoft Visual Studio 开发环境中提供第一流的 DB2 开发体验。

本文详细概述了 Visual Studio .NET 中 IBM Explorer 新的 DB2 Data Connections 文件夹。 首先,我们将研究使用 Server Explorer 可以做些什么事情,然后开始着重讨论 DB2 Data Connections 文件夹的新增能力。

使用 Visual Studio Server Explorer

您可以使用 Server Explorer 来查看和操作任何您对其拥有网络访问权的服务器上的数据链路、数据库连接和系统资源。

图 1. Visual Studio Server Explorer
Visual Studio Server Explorer

虽然 Server Explorer 的功能丰富,但它有一些常规限制:

  • 单个 Data Connection 子文件夹缺少文件夹数据检索之前的过滤支持。
  • 单个 Data Connection 子文件夹不高速缓存会话之间的项数据,因而要求活动连接和重新查询来填充各种文件夹。
  • Data Connection 文件夹不支持添加 DB2 受管的提供程序连接 — 仅支持 ODBC 和 OLE DB 连接。
  • 经常会弹出一个对话框提示输入 DB2 用户名和密码。

通过添加名为 IBM Explorer(它解决上述大部分限制并为您提供附加功能)的新工具窗口,IBM DB2 开发外接程序扩展了 Visual Studio .NET 环境。





回页首


介绍 IBM Explorer 的 DB2 Data Connections 文件夹

有了 IBM Explorer 工具窗口( 图 2),Visual Studio .NET 用户就可以使用 Data Connections 文件夹来访问 IBM 数据库连接。IBM Explorer 中的 Data Connections 文件夹类似于 Server Explorer 中的 Data Connections 文件夹,但是前者是为 DB2 受管的提供程序连接特别设计的。


图 2. IBM Explorer 的 DB2 Data Connections 文件夹
IBM Explorer 的 DB2 Data Connections 文件夹

通过 IBM Explorer 中的 Data Connections 文件夹,您可以:

  • 使用多个支持“随需连接(connect on demand)”技术的已命名 DB2 连接。
  • 异步访问数据库目录信息。
  • 指定数据库目录过滤器和本地高速缓存,以获得更佳的性能和可伸缩性。
  • 查看服务器对象(包括表、视图、存储过程和用户定义的函数(user-defined function,UDF))的属性。
  • 从表和视图检索数据。
  • 对任何语言的存储过程和 UDF 进行测试运行。
  • 查看 SQL 存储过程和 UDF 的源代码。
  • 删除表、视图、存储过程和 UDF。
  • 使用拖放操作生成 ADO .NET 代码。




回页首


使用连接

通过对连接文件夹使用 Add Connection 菜单操作,您可以添加任意数量的 DB2 受管的提供程序连接。 如果每个连接都与不同的用户名和密码相关联,则可以将多个连接添加到同一个数据库别名。 这一功能意味着:对于同一个连接数据库别名,您可以有不同的文件夹过滤器以及不同的访问权限。

DB2 Data Connections 文件夹目前支持四个子文件夹:tables、views、stored procedures 和 functions。

DB2 Data Connections 文件夹目前支持 DB2 for Linux、UNIX®、Windows V8.1 以及 DB2 UDB for z/OS™ 和 OS/390® V7。

添加新连接

要添加新的 DB2 数据库连接,只要选择 Data Connections 文件夹的 Add Connection菜单操作。

图 3 所示,当添加新连接时,可以指定缺省连接选项(如缺省模式)以及 z/OS 的缺省构建所有者。 您还可以指定将用于连接子文件夹的缺省模式过滤器。


图 3. 添加连接
添加连接

缺省连接名被提供给新添的连接。它是数据库别名和用户名的结合。 稍后,您可以通过对连接文件夹使用 Rename菜单操作来更改这个名称。

修改连接

在任何时候要修改连接属性(包括数据库别名、用户名、密码以及连接选项),只要对连接文件夹选择 Modify菜单操作。

在 Options 选项卡(如 图 4 所示)中,可以指定将用于非限定 DB2 对象的缺省 SQL 模式或 SQL ID(SQL Schema or SQL ID)名。例如,如果发出 SELECT * from MYTABLE ,那么 DB2 将先查找 < SQL Schema>.MYTABLE ,如果未找到,则接着查找 < User name>.MYTABLE 。 构建所有者(Build owner)是 z/OS 次级权限 SQL ID,该 ID 将有删除(DROP)和更改(ALTER)SQL 存储过程的许可权。


图 4. 修改连接
修改连接

删除连接

对连接文件夹使用 Delete 菜单操作,以从数据连接列表中除去所选的连接。 请小心一点,因为这将丢失所有与该连接相关联的在本地高速缓存的数据。





回页首


使用表和视图

IBM Explorer 显示任何给定数据连接的服务器端表和视图的列表。 在“表”的情况中,在同一文件夹中同时支持常规表以及 别名(远程数据源的名称)。tables 和 views 文件夹允许从数据库服务器进行过滤和刷新。

图 5 所示,表和视图的属性显示在 Visual Studio .NET 属性对话框中。 这些属性包括对象类型、注释和模式(所有者)名。

图 5. DB2 表属性

展开某一特定表项将显示该表的列的列表。如 图 6 所示,当选择特定表或视图列时, 您将在 Visual Studio .NET 属性对话框中看到该列的属性。列属性包括名称、数据类型信息、允许空值标志、标识标志以及主键标志。

图 6. 列属性
列属性

设置表和视图的过滤器

通过 IBM Explorer,可以在从 DB2 服务器检索表和视图的任何目录信息之前设置过滤器。 表和视图过滤器在功能上是一样的。

当指定新的过滤器或对 tables/views 文件夹发出 Refresh 命令时, 会执行异步任务来检索新的表/视图列表。如果任务执行成功,则会用最新过滤的项列表来更新相应的文件夹。

图 7. 检索之前过滤表或视图
检索之前过滤表或视图

表和视图过滤器意味着您可以根据项的模式或实际名称来限制项列表。 如果选中 Meet all conditions 选项,则必须满足这两个条件;否则,如果满足其中的一个条件,就会包含该项。

从表和视图检索数据

对于这个文件夹中的任何表或视图,可以请求从服务器检索该项的行采样。 当成功时,结果显示在数据表格( 图 8)中,状态消息出现在 IBM DB2 Output 窗格中。

图 8. DB2 数据结果输出数据表格
DB2 数据结果输出数据表格

删除表和视图

当删除表或视图时,会从数据库服务器中删除相应的项。 不能撤销删除操作 。为了使操作成功,您必须有表或视图的删除许可权。





回页首


为表和视图生成 ADO.NET 代码

通过使用 IBM Explorer,可以拖动一个或多个表或视图,然后将这些元素放在窗体设计器中, 这将创建一个新的 DB2 数据连接对象(如果不存在具有相似属性的其它数据连接对象)。另外,还创建一个新的 DB2 数据适配器对象。该数据适配器将有四个 DB2 命令:select、insert、update 和 delete。对于每一个表或视图,都创建一个适配器。DB2 命令 SQL 文本基于一组被拖动的表或视图的列。

图 9 所示,生成的 DB2 ADO.NET 对象被添加到窗体设计器的组件托盘。 只看得到 DB2 连接和数据适配器对象。而看不到生成的 DB2 命令。

图 9. 组件托盘中带有 DB2 表或视图对象的 Visual Studio .NET 窗体设计器
组件托盘中带有 DB2 表或视图对象的 Visual Studio .NET 窗体设计器

将 DB2 对象添加到组件托盘中也就是将下列代码片段插入到窗体的代码文件中:

  • 将 DB2 受管的提供程序对象声明为窗体类中的私有属性。
  • 在窗体的 InitializeComponent 生成的方法代码区域中插入 DB2 对象初始化值。

所有必需的 DB2 命令参数都被添加到已生成的 UPDATE、INSERT 和 DELETE 命令中。

您可以通过访问 DB2 数据适配器的属性来查看为各种 DB2 数据适配器命令而生成的 SQL 文本和命令参数, 如 图 10所示。

图 10. DB2 受管的提供程序的 Visual Studio .NET 属性和命令
DB2 受管的提供程序的 Visual Studio .NET 属性和命令

可以单击 Configure Data Adapter命令超链接来启动 Data Adapter Configuration 向导。 该向导允许您修改连接属性以及 SELECT、INSERT、UPDATE 和 DELETE 命令。

或者,可以选择 DB2 连接对象并启动数据连接属性编辑器来修改连接字符串。 也可以为每个数据适配器命令选择个别命令文本,然后启动命令文本编辑器来修改命令 SQL 及其相关参数。

通过使用数据适配器配置向导(如 图 11 所示), 可以选择不创建可选的 INSERT、UPDATE 和 DELETE 命令,因为部分或所有这些可选命令可能不适用于您的应用程序需求。

图 11. DB2 Data Adapter Configuration Wizard — 选择可选命令
DB2 Data Adapter Configuration Wizard — 选择可选命令

也可以根据 SELECT 命令 SQL,通过使用 DB2 命令构建器对象来选择重新生成 INSERT、UPDATE 和 DELETE 命令 SQL。

当重新生成了命令文本时,您需要以手工方式更新该命令的参数列表,如 图 12 所示。 这包括指定参数名、数据类型以及值类型,即缺省值、原始值和当前值。

图 12. DB2 Data Adapter Configuration Wizard — INSERT 命令语句
DB2 Data Adapter Configuration Wizard — INSERT 命令语句

表和视图至窗体控件的运行时绑定

通过使用已生成的数据适配器,可以将窗体控件动态地绑定到数据适配器。要做到这一点,必须:

  1. 在窗体类中声明一个私有数据集对象。
  2. 在窗体装入事件中实例化数据集。
  3. 用数据适配器中的数据填充数据集。可以在窗体装入事件中做到这一点。
  4. 将窗体控件动态地绑定到数据集。这也可以在窗体装入事件中完成。
  5. 当需要将任何数据集更新传回 DB2 数据库服务器时,调用数据适配器 Update 方法。

清单 1. 显示将窗体的数据表格动态绑定到 DB2 数据适配器的 C# 代码片段

          public class Form1 : System.Windows.Forms.Form
{
	
          private DataSet dataSet1;
	
          private void Form1_Load(
          object sender, System.EventArgs e)
	{
		
          try
		{
			dataSet1 = 
          new DataSet();
			db2DataAdapter1.Fill(dataSet1);
			dataGrid1.SetDataBinding(dataSet1,"");
		}
		
          catch( Exception exp)
		{
			MessageBox.Show(exp.Message);
		}
	}
	
          private void button1_Click(
          object sender, System.EventArgs e)
	{
		db2DataAdapter1.Update(dataSet1);
	}
}
        

表和视图至窗体控件的设计时绑定

要实现从窗体控件到数据适配器的正确的设计时绑定,必须为给定的数据适配器生成一个 ADO.NET DataSet。

要生成 DB2 数据适配器数据集,只要选择所需的 DB2 数据适配器,然后单击 Generate DataSet操作。

图 13. 生成数据集
生成数据集

也可以针对任何其它的 OLE DB 或 ODBC 数据适配器发出 Generate DataSet 命令。只需选择您所感兴趣的 DB2 命令即可, 而不必生成 OLE DB 或 ODBC 数据适配器的数据集。 这将允许您针对 DB2 适配器来使用 Visual Studio .NET 的标准数据集生成器功能部件。

数据集生成之后,可以使用 Visual Studio .NET 属性对话框来修改任何窗体控件的数据绑定属性, 使它直接指向数据集。对于数据表格,必须将 Data Source 属性映射到数据集名,将 DataMember 属性映射到数据集中的表名。

数据适配器代码生成的限制

当依靠自动数据适配器代码生成时,有下列几个常规限制:

  • 当为视图生成更新和删除命令,生成的 SQL 语句可能不足以唯一地标识要更新或删除的行。 除非在视图列的列表中包括了主键,否则,这些命令可能不能正确工作。
  • 当为视图生成插入命令时,在某些情况下,插入可能不成功。这些情况包括表的视图,其中,视图不能包括一些不可为空的列。
  • 不能为具有标识列的表生成自动插入和更新命令。自动代码生成将不能处理这些情况。
  • 当为别名或只读视图生成插入、更新和删除命令时,已生成的 SQL 语句将失败,因为这种命令在这些情况中无效。




回页首


v

IBM Explorer 显示了任何给定的数据连接的服务器端过程和函数的列表。虽然在 DB2 数据库工程中只可以创建 SQL 过程和函数, 但是过程和函数文件夹中还可以包含不用 SQL 编写的过程和函数。 在该文件夹中,可以从数据库服务器进行过滤和刷新。

Visual Studio .NET 属性对话框如 图 14 所示显示了过程和函数的属性。 这些属性包括对象类型、注释、模式(所有者)名、特定名和参数风格等。 对于 SQL 过程,还显示了包名称,这意味着:您可以使用 DB2 Visual Explain 图形实用程序来查看 SQL 过程所包含的 SQL 代码的 SQL 存取方案。

图 14. 在 Visual Studio .NET 中显示的 DB2 过程属性
在 Visual Studio .NET 中显示的 DB2 过程属性

图 15 所示,当您展开某个特定过程或函数项时, 将看到参数列表,如果展开表函数,将看到该项列的列表。当选择某个特定参数或列时,将在 Visual Studio .NET 属性对话框中看到该项的属性。

图 15. 在 Visual Studio .NET 中显示的 DB2 过程参数属性
DB2 过程参数属性

设置过程和函数的过滤器

通过 IBM Explorer,可以在从 DB2 服务器检索过程和函数的任何目录信息之前设置过滤器。 过程和函数的过滤器是相同的。

当指定新的过滤器或对过程或函数文件夹发出 Refresh 命令时, 会执行异步任务来检索新的过程或函数的列表。如果任务执行成功,则会用最新过滤的项列表来更新相应的文件夹。

图 16. 过滤 DB2 过程
过滤 DB2 过程

过程和函数过滤器允许您根据项的模式、实际名称和语言来限制项列表。 如果选中“Meet all conditions”选项,则必须满足这两个条件;否则,如果满足其中一个条件,就会包含该项。

运行过程和函数

通过使用 IBM Explorer,可以对存储过程(或任何语言)和 UDF 进行测试运行。 在测试运行结束时执行自动回滚。如果过程或函数需要输入参数,则会显示 Parameter Values对话框,以允许您指定任何输入或输入/输出参数的值。

图 17. 过程或函数的 Parameter Values 对话框
Parameter Values 对话框

当运行完成后,结果显示在 DB2 Database Results 数据表格中。该网格还包括任何输入和输出参数值。

查看过程和函数的源代码

对于任何 SQL 过程或函数,都可以使用 IBM Explorer 来查看对象的 SQL 源代码,因为它就存储在数据库中。 它与用于创建这些对象的脚本文件不匹配, 因为这种脚本文件可能包含其它 SQL 语句,如 DROP 和 GRANT 等等。

删除过程和函数

当删除过程或函数时,会从数据库服务器中删除相应的项。 不能撤销该删除操作 。为了使操作成功,您必须有过程或函数的删除许可权。





回页首


为过程和函数生成 ADO.NET 代码

通过使用 IBM Explorer,可以拖动过程或函数,然后将它放到窗体设计器上。 如 图 18 所示,如果不存在具有相似属性的其它数据连接对象,则会创建一个新的 DB2 数据连接对象。 还会创建一个相关的 DB2 命令来调用过程或函数。与表或视图的拖放不同,这不会创建数据适配器对象。 这是一个标准行为,因为可能需要额外的过程和函数来执行更新、删除和插入(假设可以进行这些操作)。

图 18. 组件托盘中带 DB2 过程或函数对象的 Visual Studio .NET 窗体设计器
窗体设计器

DB2 命令文本将基于被拖动的对象的类型(参见下面的 表 1)。 如果过程或函数需要任何参数,那么这些参数对象将自动添加到命令中。

表 1. 为过程和函数生成的 ADO.NET 命令的类型

对象 命令类型 命令文本
过程存储过程Schema.Procedure
标量函数文本 VALUES(Schema.Function(parameter markers))
标量函数(OS/390)文本 SELECT Schema.Function(parameter markers) from SYSIBM.SYSDUMMY1
表函数文本 SELECT * FROM TABLE(Schema.Function(parameter markers)) AS T

使用组件托盘中过程或函数命令的方法有许多种。如果命令的目的是检索数据集,那么您只要从设计器工具箱的 Data 选项卡拖放 DB2 数据适配器对象,然后将过程或函数命令指定给 该数据适配器的 SelectStatement。然后,可以将数据适配器与数据表格相关联,并查看生成的数据集。

可以通过对已生成的连接对象的连接字符串属性使用 DB2 Data Connection 定制编辑器来修改该连接字符串。 这允许您更改数据库别名、用户名和密码。

可以通过对命令文本属性使用 DB2 Command Text 定制编辑器来修改过程或函数命令,包括其参数列表。

将过程和函数绑定到窗体控件

有关将过程和函数绑定到窗体控件的信息,请参阅 表和视图至窗体控件的设计时绑定一节和 表和视图至窗体控件的运行时绑定一节。





回页首


用户高速缓存和连接密码

IBM Explorer 的 Data Connections 文件夹将数据连接目录数据高速缓存在客户机上。 下次调用 Visual Studio .NET 时,它可以使用高速缓存的数据,这样就不需要重新执行数据库查询来检索目录数据了。 您始终可以通过对特定数据库连接文件夹或其个别子文件夹显式地调用刷新操作来刷新高速缓存。

目录高速缓存一般存储在 %APPDATA%\\IBM\\vsnet 路径中,其文件名为 userCache.xml 不要手工修改该文件 。如果该文件被毁坏,会用一个空白文件自动替换它。

用于连接各种 DB2 数据库的密码存储在同一路径下的一个单独文件中。 该文件的名称是 passwords.txt 。出于安全性原因,该文件中的数据被自动加密。通过保存密码,您无需在每次启动 Visual Studio .NET 时指定用户名和密码。





回页首


结束语

IBM Explorer 的 Data Connections 文件夹向您提供了特别为 DB2 受管的提供程序连接设计的一组丰富的功能, 并向您提供高级的 RAD 能力,以大大地简化 DB2 服务器系列的应用程序开发。IBM Explorer 的一些主要功能包括:

  • 支持 DB2 受管的提供程序数据连接。
  • 异步执行目录查询并支持多个查询的同步执行。
  • 检索之前的表、视图、过程和函数的目录数据过滤器。
  • 目录数据的本地客户机端和基于用户的高速缓存以及数据连接密码加密。
  • 通过使用数据高速缓存和随需连接技术,在断开连接方式下使用数据库。
  • 访问 DB2 表、视图和存储过程以及任何语言的 UDF。
  • 表和视图的属性查看、数据检索和删除。
  • 存储过程和用户定义的函数的属性查看、代码查看、测试运行和删除。
  • 将目录对象拖放到 WinForms,以自动生成 ADO.NET 代码。
  • 支持窗体控件的设计时和运行时数据绑定。




回页首


免责声明

就本文所描述的对即将发布的产品功能的计划来说,读者要知道这样的产品计划可能会更改。 因此,读者不应该根据这样的计划来制定产品设计计划,也不应该以其它方式依赖于这里所作的声明。



参考资料



关于作者

照片:Abdul H. Al-Azzawe

Abdul H. Al-Azzawe是位于圣何塞(San Jose)的 IBM 硅谷实验室的高级软件工程师。他于 1990 加入 IBM,经验丰富。Abdul 是 Windows 上 DB2 SQL 调试器和应用程序开发工具方面的首席架构设计师。在担任这一职位之前,他是 IBM 多伦多实验室核心 DB2 引擎开发团队的成员。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款