级别: 初级 Abdul Al-Azzawe, DB2 应用程序开发支持, IBM 硅谷实验室
2002 年 8 月 01 日 DB2 版本 8 许诺成为开发人员最令人振奋的发行版。特别为 Microsoft Visual Studio 开发人员设计的一个特性是新的集成的 Visual Studio 6.0 外接程序,它包括了使您的工作变得更容易的工具。
简介
对于开发人员来说,DB2® Universal Database 版本 8 最令人振奋的新特性之一就是引入了一组新的 Visual Studio 6.0 外接程序(Add-In)。任何熟悉 Visual Studio 6.0 的人都知道它包含一组丰富的数据库应用程序开发工具。这些工具包括用于浏览数据库连接的 Data View、用于根据 Data View 中的表生成新 SQL 查询的 Query Builder 以及用于构建一组新表的 Schema Designer。尽管这些工具大多数都可以使用 DB2 连接,但它们提供的功能在某种程度上对 DB2 是有限制的。
Visual Studio 的 DB2 开发外接程序(DB2 Development Add-In)不仅解决了这些限制,而且它们提供的附加特性还优于为其它 DBMS 提供的特性,从而使得 DB2 成为应用程序开发的首选数据库服务器。
本文的目的是向您介绍为 Visual Studio 开发人员提供的这一令人振奋的新 DB2 工具。
技术要点
Visual Studio 6.0 的 DB2 开发外接程序旨在为数据库开发人员提供服务器端开发特性(与使用新的 DB2 Development Center 所提供的特性相似)、客户机端开发特性(如服务器对象的 ActiveX 数据对象(ADO)代码的自动生成)以及源代码控制管理(通过使用 Visual Source Safe)。
有关 DB2 Development Center 的更多信息,请参阅概述文章
DB2 Development Center — 下一代 AD 工具。
关键特性
Visual Studio 的开发外接程序的一些关键特性包括:
Visual Studio 集成
- 通过使用 DB2 Development View 紧密地集成到 Visual Basic、Visual C++ 和 Visual InterDev 6.0 IDE 中。
- 支持源代码控制管理(通过使用 Visual Source Safe 6.0)。
- DB2 连接、过程和函数的客户机端 ADO 代码生成。
- DB2 连接、过程和函数的客户机端 Data Environment 对象创建。
功能
- 支持整个 DB2 服务器系列,包括 DB2 Universal Database for z/OS、DB2 for iSeries、DB2 for UNIX®、Linux for 390 和 Windows®。
- 增强的 z/OS 支持,其中包括专门的 SQL ID(包所有者、构建所有者和辅助 SQL ID)和高级构建选项。
- 支持开发 SQL 和 Java 存储过程、SQL 标量和表用户定义函数、MQSeries®、OLE DB、XML 表函数以及 EJB 方法与属性的结构化数据类型。
- 支持查看实时的数据库表、视图、触发器、存储过程和用户定义函数。
工程管理
- 可从数据库、其它工程以及其它源文件导入存储过程与函数。
- 用于已导出的 DB2 Development Center 工程的部署工具,具有针对与 DB2 类似的服务器的二进制文件部署支持。
测试与调试
- 在任何受支持的语言中测试存储过程和用户定义函数的能力。
- 可保存的对象测试设置,包括参数值以及执行前和执行后的 SQL 脚本。
- 带有变量值更改支持的增强的 SQL 存储过程调试(通过使用集成的 SQL 调试器)。
- 简化的 Java 存储过程调试(通过使用 IBM VisualAge 分布式调试器)。
可伸缩性与性能
- 带有连接合用的联机(连接的)与脱机(断开的)数据库连接支持。
- 先于数据库目录数据检索的预先过滤。
- 可避免重复查询的客户机高速缓存和数据库目录数据持久性。
- 使用多线程的并发任务执行。
注册 DB2 开发外接程序
在使用 Visual Studio 的外接程序之前,需要在系统上注册该外接程序。可用以下两种方法之一来注册外接程序:
- 使用任务栏,单击
Start=>Programs =>IBM DB2 =>Set-up Tools =>Register Visual Studio Add-Ins
- 使用 DOS 窗口,运行以下命令:
db2vscmd register
注册外接程序会添加适当的 Windows 注册表项,并使外接程序能被 Visual Studio 使用。为了正确注册,请确保在注册外接程序之前至少启动一次各种 Visual Studio 组件。这是为了确保已经创建了您的 Visual Studio 用户概要文件。
若安装 DB2 之前已经安装了 Visual Studio,则注册命令会自动运行。
提示:DB2 开发外接程序利用了许多 DB2 Development Center 对话框和向导。由于 Java 和 Visual Basic 之间一些细微的互操作性限制,这些视图中有些可能会被 Visual Studio IDE 遮挡。为了缓解这个问题,大多数 DB2 Development Center 视图都在桌面的左上角显示;要确保使那块空间可见并且不要使 Visual Studio IDE 窗口最大化。
Visual Basic 6.0 的 DB2 开发外接程序
Visual Basic 的 DB2 开发外接程序紧密地集成到 Visual Basic IDE 中。一旦激活,外接程序就会:
- 将适当的 DB2 菜单项插入 Visual Basic 的 View、Tools 和 Help 菜单
- 创建用于启动各种 DB2 Center 和工具的 DB2 Tools 工具栏
- 显示 DB2 Development 和 Output 视图
图 1. Visual Basic 的 DB2 开发外接程序
此 Development View 是通过使用 Visual Basic UI 框架实现的“可停驻(dockable)”视图。所有其它辅助视图(包括输出视图、向导和对话框)都是浮动 DB2 Development Center 视图。
外接程序的关键特性之一是其针对 DB2 连接、过程和函数的客户机端 Visual Basic ADO 代码生成与 Data Environment 对象创建。
启动 Visual Basic 的 DB2 开发外接程序
要从 Visual Basic 启动 DB2 开发外接程序,首先必须至少有一个活动的 Visual Basic 工程。然后选择
Add-ins =>IBM DB2 Development Add-In。在装入并初始化所有资源以后显示 DB2 Development View。
Visual C++ 6.0 的 DB2 开发与工具外接程序
Visual C++ 的 DB2 外接程序紧密地集成到 Visual C++ IDE 中。有两个外接程序:DB2 开发外接程序和 DB2 工具外接程序。当被激活时,工具外接程序会创建一个用于启动各种 DB2 Center 和工具的 DB2 Tools 工具栏。DB2 开发外接程序创建用于访问开发、输出和编辑器视图的 DB2 Development 工具栏。
图 2. Visual C++ 的 DB2 开发外接程序
此 Development View 是通过使用 Visual C++ UI 框架实现的浮动工具窗口。所有其它辅助视图(包括输出视图、向导和对话框)都是浮动 DB2 Development Center 视图。此 Development View 不能在 VC++ IDE 中“停驻”;但是您可以从 DB2 开发工具栏切换该视图的可见性。
启动 Visual C++ 的 DB2 开发与工具外接程序
要从 Visual C++ 启动 DB2 开发与工具外接程序,首先必须至少有一个活动的 Visual C++ 工程。然后,通过从 Macros 和 Add-Ins 选项卡选择 DB2 开发和工具外接程序项,就可以从
Tools =>Customize启动外接程序。
在装入并初始化所有资源以后显示 DB2 Development View。
Visual InterDev 6.0 的 DB2 开发外接程序
Visual InterDev 的 DB2 开发外接程序紧密地集成到 Visual InterDev IDE 中。一旦激活,外接程序就会:
- 将适当的 DB2 菜单项插入 Visual InterDev 的 View、Tools 和 Help 菜单
- 创建用于启动各种 DB2 Center 和工具的 DB2 Tools 工具栏
- 显示 DB2 Development 和 Output 视图
图 3. Visual InterDev 的 DB2 开发外接程序
此 Development View 是通过使用 Visual InterDev UI 框架实现的“可停驻”视图。所有其它辅助视图(包括输出视图、向导和对话框)都是浮动 DB2 Development Center 视图。
该外接程序的关键特性之一是其针对 DB2 连接、过程和函数的 Active Server Pages(ASP)的客户机端 VBScript ADO 代码生成。
启动 Visual InterDev 的 DB2 开发外接程序
要从 Visual InterDev 启动 DB2 开发外接程序,首先必须至少有一个活动的 Visual InterDev 工程。然后选择
Tools =>IBM DB2 Development Add-In。
在装入并初始化所有资源以后显示 DB2 Development View。
使用工程
可以将 DB2 开发外接程序工程与任何 Visual Studio 工程关联在一起。刚开始启动外接程序时,会创建一个与您的 Visual Studio 工程同名的新的 DB2 工程,并使其与该 Visual Studio 工程相关联。缺省情况下,该工程会被保存在 Visual Studio 工程的 dc 子目录中。您可以选择保留相同的名称和路径,也可通过使用
Save As或通过在工程属性对话框中更改名称和路径,从而用不同的工程名称和路径保存该 DB2 工程。无论您如何选择,Visual Studio 工程都会和最后保存的 DB2 工程关联。
当您下一次启动同一 Visual Studio 工程的外接程序时,关联的 DB2 工程会自动为您打开(或创建)。您可以选择打开另一个 DB2 工程。
提示:在首次启动 Visual Studio 外接程序以前,要确保对 Visual Studio 工程正确地进行了命名和保存。这将确保您的 DB2 工程有正确的缺省名称和路径,而不必以后手工更改它们。
使用连接
您可以向 DB2 Development View 工程添加一个或多个 DB2 数据库连接。要添加连接,只需选择工程的
Add Connection以启动 Add Connection 向导。
图 4. 添加 DB2 Connection 向导
在添加连接时,指定模式过滤器选项以将目录数据访问限定在那些您最感兴趣的对象,这通常是个不错的想法。所有的连接子文件夹(过程、函数等)都将继承这个过滤器选项。连接向导还允许您指定其它的连接选项,其中包括 OS/390 辅助 SQL ID。
生成 ADO 连接
DB2 开发外接程序会生成客户机端 ADO 代码,该代码是使用本机 IBM OLE DB 提供程序 IBMDADB2 建立到 DB2 服务器的连接所必需的。通过打开代码窗口,然后在 Development View 中为期望的 DB2 连接选择
Add ADO Connection Code,就可以生成 ADO 代码。
图 5. Visual Basic ADO 连接代码示例
'create and return ADO Connection Object.
Public Function SAMPLE_GetConnection( _
Optional strUserName As String = "", _
Optional strPassword As String = "") As ADODB.Connection
On Error GoTo SAMPLE_ErrHandler
Dim strConnectionString As String
strConnectionString = "Provider=IBMDADB2; DSN=SAMPLE"
If strUserName <> "" And strPassword <> "" Then
strConnectionString = strConnectionString & _
"; User ID=" & strUserName & "; Password=" & strPassword
End If
'Create new ADO connection object
Dim adoConnection As New ADODB.Connection
With adoConnection
.CursorLocation = adUseClient
.ConnectionString = strConnectionString
End With
'Open ADO Connection Object
'Call adoConnection.Open()
'Return new ADO connection object
Set SAMPLE_GetConnection = adoConnection
Exit Function
SAMPLE_ErrHandler:
MsgBox "Error Code: " & Err.Number & vbNewLine & _
"Description: " & Err.Description & vbNewLine & _
"Source: " & Err.Source, _
vbOKOnly + vbCritical
Err.Clear
Set SAMPLE_GetConnection = Nothing
End Function
|
生成的代码可以是 Visual Basic 的 VB 或 Visual InterDev 的 VBScript。对于 Visual Basic,生成的代码会被自动插入到代码窗口的底部;但是,对于 Visual InterDev,生成的代码将出现在 Output View 中。您必须将该代码从 Output View 剪切并粘贴到期望的 ASP 代码窗口。
创建数据环境连接
除了 ADO 代码生成以外,Visual Basic 的 DB2 开发外接程序还允许您为工程数据环境创建 Connection 对象。开发数据绑定表单时需要这些对象。只要在 Development View 中为期望的 DB2 连接选择
Add ADO Connection Object,然后选择要添加新连接的数据环境以及 ADO 连接对象名。
图 6. 添加数据环境连接对象
使用过程
DB2 Development View 让您在列举 DB2 服务器端存储过程之前指定过滤器。不管您指定了什么过滤器,更新和未构建的(“脏”)存储过程始终在存储过程文件夹中显示。
您可以查看属性,并测试用任何语言编写的存储过程;对于 SQL 和 Java 存储过程,您还可以查看和修改源代码,以及构建和删除过程。在撰写本文时,除了 iSeries 以外,Java 支持对所有的平台都可用。
可以使用 Create Stored Procedure 向导创建新的 SQL 和 Java 存储过程。可以使用集成的 SQL 调试器调试 SQL 存储过程,可以使用 IBM Visual Age 分布式调试器调试 Java 存储过程。
要获得更多信息,请参阅 DB2 Development Center 概述文章中的
开发存储过程。
为过程生成 ADO 命令
DB2 开发外接程序会生成客户机端 ADO 代码,该代码是通过使用 ADO 命令对象调用 DB2 存储过程所必需的。通过打开代码窗口,然后在 Development View 中为期望的存储过程选择
Add ADO Command Code,就可以生成 ADO 代码。
图 7. 存储过程的 Visual Basic ADO 命令代码示例
'Create and execute a command object. Return a RecordSet object
Public Function PROCEDURE1_ExecuteCommand(ByRef adoConnection As ADODB.Connection, _
ByVal vvar0 As Long, _
ByRef vvar1 As String) _
As ADODB.Recordset
'create ADOCommand Object.
Dim adoCommand As ADODB.Command
Dim adoRecordSet As ADODB.Recordset
On Error GoTo PROCEDURE1_ExecuteCommand_ErrHandler
Set adoCommand = New ADODB.Command
With adoCommand
.CommandType = adCmdStoredProc
.ActiveConnection = adoConnection
.CommandText = "ABDUL.PROCEDURE1"
End With
'Add Parameters to the Command object
Dim adoParm As Parameter
Set adoParm = adoCommand.CreateParameter("var0", _
adInteger, _
adParamInput, _
Value:=vvar0)
Call adoCommand.Parameters.Append(adoParm)
Set adoParm = adoCommand.CreateParameter("var1", _
adVarChar, _
adParamOutput, _
4000)
Call adoCommand.Parameters.Append(adoParm)
Set adoRecordSet = New ADODB.Recordset
adoRecordSet.Open adoCommand, , adOpenStatic, adLockOptimistic
'Get the output values
vvar1 = adoCommand.Parameters("var1").Value
'Return the record set object object
Set PROCEDURE1_ExecuteCommand = adoRecordSet
Set adoCommand = Nothing
Exit Function
PROCEDURE1_ExecuteCommand_ErrHandler:
If adoConnection.Errors.Count > 0 Then
MsgBox "Error code: " & adoConnection.Errors(0).Number & vbNewLine & _
"Description: " & adoConnection.Errors(0).Description & vbNewLine & _
"Source: " & adoConnection.Errors(0).Source, _
vbOKOnly + vbCritical
adoConnection.Errors.Clear
Else
MsgBox "Error code: " & Err.Number & vbNewLine & _
"Description: " & Err.Description & vbNewLine & _
"Source: " & Err.Source, _
vbOKOnly + vbCritical
Err.Clear
End If
End Function
|
生成的代码可以是 Visual Basic 的 VB 或 Visual InterDev 的 VBScript。对于 Visual Basic,生成的代码会被自动插入到代码窗口的底部;但是,对于 Visual InterDev,生成的代码将出现在 Output View 中。您必须将该代码从 Output View 剪切并粘贴到期望的 ASP 代码窗口。
生成的代码在过程参数的 DB2 SQL 数据类型和 ADO 数据类型之间执行缺省的数据映射。
为过程创建数据环境命令
除了 ADO 代码生成以外,Visual Basic 的 DB2 开发外接程序还允许您为工程的存储过程创建数据环境 Command 对象。开发数据绑定表单时需要这些对象。只要在 Development View 中为期望的 DB2 存储过程选择
Add ADO Command Object,然后选择数据环境和连接(其中将添加调用选定的存储过程的新命令)。还可以指定 ADO 命令对象的名称。
图 8. 添加数据环境命令对象
提示:由于 Visual Basic 扩展性 API 对数据环境的限制,所以没有将参数信息添加到为有参数的 DB2 过程新创建的 ADO 命令对象中。可以在已创建的 ADO 命令对象的属性中手工添加参数信息。可从 DB2 Development View 中过程的属性找到参数信息。
使用函数
DB2 Development View 允许您在列举 DB2 服务器端用户定义函数之前指定过滤器。无论您指定了什么过滤器,“脏”函数始终在函数文件夹中显示。
可以查看属性,并测试用任何语言编写的函数;对于 SQL 标量和表函数,可以查看和修改源代码,以及构建和删除函数。在撰写本文时,SQL 函数开发支持对于 UNIX、Windows 和 Linux/390 DB2 服务器上的 DB2 可用。
可以使用向导创建新的 SQL 标量和表函数。还有用于创建 MQSeries 阅读器/接收器(reader/receiver)函数、XML 文档解析器函数和 OLE DB 数据源用户定义表函数的向导。
要获得更多信息,请参阅 DB2 Development Center 概述文章中的
开发 SQL 函数。
为函数生成 ADO 命令
DB2 开发外接程序会生成客户机端 ADO 代码,该代码是通过使用 ADO 命令对象调用 DB2 用户定义函数所必需的。请参阅
为过程生成 ADO 命令以获得更多信息。
为函数创建数据环境命令
除了 ADO 代码生成以外,Visual Basic 的 DB2 开发外接程序还允许您为工程的存储过程创建数据环境 Command 对象。请参阅
为过程创建数据环境命令。
导入、导出和部署
DB2 开发外接程序为您提供了高级工程管理选项,其中包括使用导入向导将现有对象添加到工程的能力,以及使用部署工具将导出的 DB2 Development Center 工程对象部署到其它 DB2 数据库服务器的能力。
要获得更多信息,请参阅 DB2 Development Center 概述文章中的
导入、导出和部署。
构建查询
DB2 开发外接程序可通过使用 SQL Assist 工具以图形的方式生成和修改 SELECT、INSERT、DELETE 和 UPDATE 语句。可将这些查询从其相应的向导或 DB2 源代码编辑器插入到存储过程和 UDF 的主体中。
还可以从 Visual Studio 工具栏启动 SQL Assist 来以图形的方式生成或修改 SQL 语句,并将它们添加到任何 Visual Studio 代码窗口(如任何您可能正在手工编码的 ADO 命令)。
要获得更多信息,请参阅 DB2 Development Center 概述文章中的
增强的 SQL Assist。
与 Visual Source Safe 集成
Visual Studio 的重要特性之一是将您的代码检入 Visual Source Safe 源代码控制管理系统的能力。这使您能进行版本控制和团队开发。Visual Studio 的 DB2 开发外接程序与 Visual Source Safe 进行了集成,并允许您将工程文件检入 Visual Source Safe 工程数据库。
提示:要使用 DB2 开发外接程序的 Visual Source Safe(VSS)特性,您首先必须安装 Microsoft Visual Source Safe。若未安装 VSS,则 DB2 开发外接程序的 VSS 菜单项是禁用的。
VSS 与 DB2 工程
要使用 Visual Source Safe 管理 DB2 代码,您首先必须将 DB2 工程添加到 Visual Source Safe。只需为 DB2 工程选择 Add Visual Source Safe Project 弹出菜单项以启动 Add Visual Source Safe Project 对话框。
图 9. 添加 Visual Source Safe 工程
您首先必须指定用户名、密码和 Visual Source Safe 数据库以进行登录,然后选择工程名称或指定新的工程名称。完成以后,您将能够检入和检出 DB2 工程文件。
VSS 与 DB2 过程和函数
要将 Java 与 SQL 过程以及 SQL 函数检入和检出到 Visual Source Safe,您首先必须把它们的源代码添加到您的 Visual Source Safe 工程中。可通过为期望的过程或函数选择 Visual Source Safe =>Add File 做到这一点。
然后您可以使用相应的 Visual Source Safe 菜单项检入和检出过程和函数文件。
提示:如果正在检入或检出的过程或函数不是在这个 Visual Studio 会话中开发的或未导入该会话中,那么在实际检入或检出文件以前,必须通过单击
View Source或
Edit Source从数据库获取源代码。
结束语
本文介绍了 Visual Studio 的 DB2 开发外接程序的许多新的、令人振奋的特性,该开发外接程序是用于构建支持整个 DB2 服务器系列的存储过程和用户定义函数的紧密集成的工具集。开发外接程序的一些特性包括:
- 使创建 Java 和 SQL 过程、SQL UDF、MQSeries 表 UDF、OLE DB 表 UDF 和 XML 表 UDF 变得容易的向导
- 支持对存储过程、UDF、触发器、表和视图的只读访问。
- 具有以脱机方式进行的服务器目录数据高速缓存的联机和脱机数据库连接支持。
- 集成的 SQL 调试器,包含大型变量支持和在调试时更改值的能力。
- DB2 连接、过程和函数的客户机端 VB 和 VBScript ADO 代码生成。
- 新的、增强的导入和部署特性,以及用于快速工程管理的向导。
- 集成 Visual Source Safe 用于源代码控制管理和版本控制。
该开发外接程序为 Microsoft Visual Studio 开发人员提供了特别为 DB2 设计的丰富的 AD 工具集,使 IBM DB2 成为 Windows 开发人员首选的跨平台数据库服务器。
声明
IBM 公司可能已拥有或正在申请与本文档内容有关的各项专利。提供本文档并未授予用户使用这些专利的任何许可权。您可以用书面方式将许可证查询寄往:
IBM Director of Licensing
IBM Corporation
North Castle Drive Armonk, NY 10504-1785
U.S.A.
本文包含来自 beta 测试级别产品的样本代码。IBM 授予您(“被许可方”)使用这个样本代码的非专有的、版权免费的许可证。然而,样本代码是以“按现状”的基础提供的,没有任何形式的(不论是明示的,还是默示的)保证,包括对适销性、适用于特定用途或非侵权性的默示保证。IBM 及其许可方不对被许可方使用该软件所导致的任何损失负责。任何情况下,无论损失是如何发生的,也不管责任条款怎样,IBM 或其许可方都不对由使用该软件或不能使用该软件所引起的收入的减少、利润的损失或数据的丢失,或者直接的、间接的、特殊的、由此产生的、附带的损失或惩罚性的损失赔偿负责,即使 IBM 已经被明确告知此类损害的可能性,也是如此。
关于作者  | 
|  |
Abdul H. Al-Azzawe 是位于 San Jose 的 IBM 硅谷实验室的高级软件工程师。他于 1990 加入 IBM,经验丰富。Abdul 是 DB2 下一代应用程序开发工具的首席架构设计师。在担任这一职位之前,他是 IBM 多伦多实验室核心 DB2 引擎开发团队的成员。
特别感谢硅谷实验室的 Kiran Potu 对 Visual Studio 外接程序开发作出的巨大贡献。
|
对本文的评价
|