DB2 Development Add-In Technical Preview——概述
Abdul Al-Azzawe |
内容 | ||
简介 | ||
DB2 数据库工程 | ||
DB2 数据连接 | ||
DB2 CLR 过程 | ||
DB2 托管提供程序工具 | ||
可重用的数据适配器 | ||
IBM DB2 工具设置 | ||
结束语 | ||
致谢 |
简介
DB2® Development Add-In for Visual Studio .NET Technical Preview 是一项重大的成就,因为它是一个健壮的且功能丰富的产品。该产品是为提高 .NET 应用程序编程人员的生产率而提供的。所引入的新功能的数目以及用于发布它们的时间都是令人惊奇的!
除了扩展的服务器支持之外,该插件还具有四个主要的功能组。而每个功能组都值得单独作为一个产品发布:
使用 DB2 Development Add-In for Visual Studio .NET Technical Preview,您可以做以下新工作:
可用性
DB2 Development Add-In for Visual Studio .NET Technical Preview 目前还是处于预览阶段。它没有 被包含在 DB2 Universal Database V8.1.2 或 V8.1.3。
有关这个早期版本的更多信息,请访问我们的 http://www7b.software.ibm.com/developerworks/db2/downloads/dotnetbeta/ Web 页面。
支持平台
DB2 Development Add-In for Visual Studio .NET Technical Preview 扩展 DB2 服务器支持,以包括:
目前,并非所有的功能对各种 DB2 服务器都可用。表 1 列举了这些受限的功能:
受限的功能 Distributed iSeries z/OS V6 Z/OS V7 Z/OS V8生成表/视图的创建脚本YesNoNoNoNo创建标量函数YesYesNoYesYes创建表函数YesNoNoNoNo生成函数的创建脚本YesYesNoNoNo生成 Web 服务YesNoNoNoNo用于创建表的表空间YesNoYesYesYes
受限的功能 Distributed iSeries z/OS V6 Z/OS V7 Z/OS V8 生成表/视图的创建脚本 Yes No No No No 创建标量函数 Yes Yes No Yes Yes 创建表函数 Yes No No No No 生成函数的创建脚本 Yes Yes No No No 生成 Web 服务 Yes No No No No 用于创建表的表空间 Yes No Yes Yes Yes
DB2 数据库工程
DB2 数据库工程在此版本中得到了增强。现在,工程树包含了表、索引、触发器和视图,以及过程、函数和脚本默认文件夹。DB2 数据库工程增加了以下新功能:
跟 Visual Studio.NET 中任何其他的全功能工程模板一样,DB2 数据库工程也支持工程间依赖性、构建顺序以及与源代码控制管理系统(如 Visual Source Safe 和 RationalClear Case)的集成。
请注意现在无论是在 IBM Projects 文件夹中,还是标准的 Visual Studio.NET 通用工程文件夹中,都可以访问到 DB2 数据库工程。
新的 DB2 数据库工程中一个极其强大的功能就是拥有一组功能丰富的脚本编制向导,它可以大大地简化 DB2 服务器对象的新建工作。除了通过包含新的可用性功能以增强现有的 SQL 过程和 SQL 函数向导之外,我们还添加了一组新的向导,包括表、视图、索引以及触发器向导。新的 CLR 向导将在下面的 DB2 CLR 过程小节中涉及。
智能的多行 SQL 编辑器
此 DB2 Development Add-In 的新版本值得夸耀的是拥有一个新的多行 SQL 编辑器,它支持 SQL 语法的彩色化显示(colorization)和智能感应(intellisense)。有了智能感应支持,就可以使用在 DB2 数据库工程和 IBM Explorer 的各个数据连接中定义的模式,以便快速查找给定模式的模式对象,或者查找给定表或视图的各个列,或者查找给定过程或函数的参数列表。
新编辑器的另一个重要特性就是内置的 SQL 分析器,它允许在可能的地方查找参数的数据类型。包括了位置参数标记以及以冒号这个特殊字符打头的实参。
在大多数 DB2 Development Add-In 向导和对话框中都嵌入了这个新编辑器。
SQL 过程和函数向导
SQL 过程和函数向导通过包含智能的多行 SQL 编辑器而得到了增强,该编辑器用于定义这些例程必需的 SQL 语句。增强的功能包括以下方面:语法的彩色化显示、智能感应以及可自动检测例程参数及其类型的 SQL 分析器。该向导另一个有趣的增强功能就是,可以从现有的表和视图的列定义中导入额外的例程参数。
得到客户的反馈后,代码段向导步骤就转向第二个对话框,因而减少了创建新例程所必需的向导步骤。
表向导
表向导允许您快速定义新的 DB2 表,包括从最简单的表到包含了主键、惟一键、外键以及高级检查约束的表。表向导还允许用特殊的值(如默认值、基于公式的值或标识值)来定义列。
该向导另一个极其强大的功能就是可从现有的表和视图中导入列定义,而这些表和视图是在 IBM Explorer 的各个数据连接中定义的。这就意味着您现在可以轻易地克隆其他表/视图的全部或部分定义,同时还包含了定义两个或多个表间的参照完整性所必需的列。
表向导步骤包括:
视图向导
视图向导简单却很强大,它允许您使用上面描述的智能多行 SQL 编辑器来定义 SQL 查询。而此查询是定义新视图所必需的。
视图向导步骤包括:
索引向导
索引向导允许您为现有的表定义索引。该向导将自动检测表的定义,并且显示合适的列。您既可以创建普通索引,也可以创建惟一索引。 针对联邦数据源还支持惟一定义的索引,或称作别名。
索引向导步骤包括:
触发器向导
触发器向导极大地简化了创建表与视图的触发器这一有点复杂的工作。它将触发器的创建划分为一些更加可管理的步骤。触发器的 SQL 条件允许您定义条件,即 WHEN 子句;而触发器操作允许您定义激活触发器的操作。这两个步骤都要使用上面已详述的智能多行 SQL 编辑器。
触发器向导步骤包括:
DB2 数据库工程特有的一个关键功能就是对于多重配置的支持,这在 Visual Studio.NET 通用数据库工程中是没有的。它允许您为脚本编译指定不同的数据连接,并且还可以在活动配置中为工程添加和减少脚本项。该功能使您可以进行测试,以及获得 QA 和生产系统,而此生产系统可以是驻留在不同服务器上的不同数据库。
对于 z/OS 和 OS/390 SQL 过程,多重配置的支持还允许您为每个配置定义一组高级构建选项。
DB2 数据连接
在此版本中,IBM Explorer 已得到了极大的增强。您现在可以
IBM Explorer 的数据连接现在就称作 连接。添加/修改连接对话框可用于发现 DB2 服务器和 DB2 服务器数据库。您再也不必为远程数据库在本地编制目录了。因为同一个物理数据库可添加多个数据连接。这就要为多个连接指定一组不同的过滤器,或者使用不同的用户 ID 和密码来连接相同的数据库。此外,还可以在数据连接文件夹中创建新的本地 DB2 数据库。
基于您反馈的信息,我们已创建了两个独立的连接设置:一个默认所有者和一个当前所有者。为新对象预先填充模式时,将在不同的向导中使用默认所有者。而插件将使用当前所有者发出 SET CURRENT SCHEMA 命令,或在对数据库执行任何脚本之前发送 SQL ID。
另一个增强的关键功能就是,可为每个连接指定高级 z/OS 构建选项和运行库选项。这些选项的默认值在 userOptions.xml
文件中已指定,但可使用下文将详述的 IBM DB2 工具设置对话框加以定制。SQL 过程向导将使用这些选项新建过程脚本。您也可以从集中管理的用户表中查找这些选项。
此版本的一个关键的新功能就是拥有一组功能丰富的脚本编制向导,它极大地简化了新数据库对象的创建工作。该工作是直接在 IBM Explorer 中以 ad hoc 方式进行的。除了不包含新的 DB2 工程选择页,这组向导与前面 DB2 数据库工程小节中所列的相同。您现在就可以向新的或现有的 DB2 数据库工程添加新脚本;或者对数据库直接执行脚本,而无需有一个 DB2 数据库工程。
表和视图支持也得到了增强,可使用向导来创建新的表和视图。此外,您还可以为表创建索引和触发器,以及为视图创建触发器。当为指定的表或视图启动触发器和索引向导时,该表和视图的信息将被预先填入向导中。
除了创建新对象,您还可以使用一个新的细节设计器访问表和视图的详细信息。这些详细信息包括列清单、索引和触发器信息。您还可以使用该设计器删除和创建新的索引和触发器。
表和视图的数据预览功能也得到了增强:现在还可执行刷新操作,以及在满足条件的地方插入、更新和删除数据行。
另一个为用于 Linux、UNIX 和 Windows 的 DB2 数据连接而添加的功能就是,可在目录信息的基础上生成 CREATE DDL。该功能可以使用 db2look 实用程序来生成脚本。该脚本既可作为新的脚本项添加给新的或现有的 DB2 数据库工程,也可直接插入现有的 DB2 脚本文件。您还可以在 IBM Explorer 中直接拖放表和视图,以及将其放入 DB2 脚本文件。
过程和函数支持同样得到了增强。其中包括可使用向导创建新的 SQL 和 CLR 过程以及 SQL 函数。而为新对象生成的脚本既可以直接被执行,也可以添加到新的或现有的 DB2 数据库工程。
查看 SQL 过程和函数的源代码,以及执行任何语言的过程和函数,这两个功能在新版本中没有较大改动。
DB2 CLR 过程
此新版本中一个最令人激动的新功能就是对 CLR(公共语言运行库)过程的支持。您可以在类程序集中编写 C# 和 VB.NET 方法,然后将之作为 DB2 过程进行部署。DB2 CLR 过程让您可以选择 .NET 中的语言编写自己的过程。
虽然在 CLR 过程主体中 SQL 是可选的,但可以使用 DB2Context 对象对其中的 SQL 进行编码,用以创建新的 ADO.NET 命令。而该命令有预置的上下文连接对象。除了输入、输出和输入/输出参数,CLR 过程还能为客户程序返回零个或多个结果集。
虽然使用 C# 和 VB.NET 工程文件夹中的标准类库模板就可以编写新的 CLR 方法,但是您也可以使用该文件夹中添加的 DB2 类库工程模板。使用 DB2 类库工程模板有以下优点:对 DB2 托管提供程序(IBM.Data.DB2)自动进行的工程引用,以及创建符合 DB2 CLR 过程必要的签名标准的基类和方法。
通过用于 C# 和 VB.NET 的新的 DB2 类工程项模板,您可以向工程添加额外的 CLR 方法和类。
清单 1. 以 C# 编写的 DB2 CLR 方法
using System; using IBM.Data.DB2; namespace DB2ClassLibrary1 { /// /// Summary description for DB2Class1. /// This class and method can be used as the basis for a DB2 CLR procedure. /// For more information on creating and deploying DB2 CLR procedures visit: /// http://www.ibm.com/software/data/developer /// /// public class DB2Class1 { public static void DB2Procedure1( String inParm1, ref String inoutParm2, out String outParm3) { // Create new command object from connection context DB2Command myCommand = DB2Context.GetCommand(); // TODO: Insert your code here outParm3 = null; // myCommand.CommandText = "SELECT FIRSTNME, MIDINIT, LASTNAME FROM EMPLOYEE"; // DB2DataReader myReader = myCommand.ExecuteReader(); // myReader.Close(); } } } |
清单 2. 以 VB.NET 编写的 DB2 CLR 方法示例
Imports System Imports IBM.Data.DB2 Namespace DB2ClassLibrary1 'Summary description for DB2Class1. ' This class and method can be used as the basis for a DB2 CLR procedure. ' For more information on creating and deploying DB2 CLR procedures visit: ' http://www.ibm.com/software/data/developer ' Public Class DB2Class1 Public Shared Sub DB2Procedure1( _ ByVal inParm1 As String, _ ByRef inoutParm2 As String, _ ByRef outParm3 As String) ' Create new command object from connection context Dim myCommand As DB2Command myCommand = DB2Context.GetCommand() ' TODO: Insert your code here outParm3 = Nothing ' myCommand.CommandText = "SELECT FIRSTNME, MIDINIT, LASTNAME FROM EMPLOYEE" ' Dim myReader As DB2DataReader ' myReader = myCommand.ExecuteReader() ' myReader.Close() End Sub End Class End Namespace |
一旦编写了一个或多个 CLR 方法,并希望将之部署到 DB2 for Windows 服务器上,您就可以利用新的 DB2 CLR 过程向导来自动检测解决方案中所有的 CLR 工程,以及所选工程中的所有候选的 CLR 方法。
CLR 向导可从以下位置启动:给 DB2 数据库工程添加一个新项的对话框,IBM Explorer 中 DB2 数据连接的工程文件夹,以及 Tools->IBM DB2 Tools->DB2 CLR Procedure Wizard 菜单。
虽然会对过程名、参数名、参数数据类型和过程选项执行默认映射,但您也可以通过向导修改这些映射。其中包括指定从每个过程返回的结果集的数目。
当您单击向导上的 Finish 时,根据适当的设置和创建语句,以及每个选中的 CLR 方法可选的授权执行语句,就可以生成 DB2 脚本文件了。
清单 3. DB2 CLR 过程的 DDL 示例
-- @ -- @ -- Drop the procedure if one already exists DROP SPECIFIC PROCEDURE DB2PROCEDURE1 @ -- -- @ -- Create procedure CREATE PROCEDURE DB2PROCEDURE1( IN INPARM1 VARCHAR ( 254 ), INOUT INOUTPARM2 VARCHAR ( 254 ), OUT OUTPARM3 VARCHAR ( 254 )) SPECIFIC DB2PROCEDURE1 LANGUAGE JAVA PARAMETER STYLE JAVA NO DBINFO FENCED CONTAINS SQL DYNAMIC RESULT SETS 0 PROGRAM TYPE SUB EXTERNAL NAME '"[!DB2CLRAssembly DB2ClassLibrary4.dll]":DB2Class1!DB2Procedure1' -- @ -- Grant access privilages to procedure GRANT EXECUTE ON SPECIFIC PROCEDURE DB2PROCEDURE1 TO PUBLIC @ |
注意:
要使 CLR 过程能够工作,就必须在 DB2 服务器上为其编目,并将其程序集传送到 sqllib//function
路径下 DB2 服务器文件系统所在的位置。为了完成该传送,将通过 DB2 CLR 过程向导,在 DB2 数据库工程中自动注册 CLR 程序集。您可以通过 DB2 工程程序集对话框来管理已注册的程序集。而该对话框可从 Assemblies... 工程弹出式菜单中启动。
不管其中定义了多少个 CLR 过程,程序集都只需在工程中注册一次。可使用对话框中的 install 操作手工安装程序集;或者在修改程序集(如重构)时,通过 DB2 数据库工程构建操作来执行自动安装。
因为在解决方案中指明了多重设置,并且可根据活动的程序集,在不同的文件路径下,使用 Visual Studio .NET 编译器创建程序集,所以您必须通过 DB2 工程程序集对话框,为程序集显式地指明客户程序文件路径。
该插件版本引入了可折叠的脚本区域的概念,此区域可由 ScriptOptions XML 标签指定。DB2 CLR 过程向导为一个或多个选中的 CLR 方法生成适当的脚本。而每个 CLR 过程 CREAT DDL 都在一个 CLR 脚本区域中进行打包。
有时候,CLR 方法签名可能会被改变,并且结束与已生成的 CLR 过程 CREATE DLL 的同步。因此,需要更新 DB2 脚本来匹配新的 CLR 方法签名。避免手工修改已生成的 CREATE DDL 是十分明智的;因而,您必须通过弹出式菜单,为折叠的 CLR 区域重启 DB2 CLR 过程向导。通过这个简版的向导,您可以更新 DB2 映射信息,并且为已更新的方法重新生成 CREATE DDL。
DB2 托管提供程序工具
DB2 Development Add-In for Visual Studio .NET Technical Preview了 DB2 托管提供程序工具箱的对象工具,包括了更直观的连接串编辑器,更高级的数据适配器配置向导(可定义结果的形态并支持过程命令),以及增强的命令编辑器(包含了带有智能感应支持的智能多行 SQL 编辑器的全部功能,智能感应支持在前面已详述)。
新的 DB2 连接串编辑器允许您从现有的 DB2 数据连接中进行选择,而这些连接都是在 IBM Explorer 中定义的。您将注意到默认情况下,连接密码不再是可见的或持久的。这一改变与 ADO.NET 连接的安全指导原则一致。当然,您也可以使用 persist security info=true 连接串选项使密码变为持久的。
新的 DB2 数据适配器的配置向导与 SQL 分析器紧密集成在一起,用以更好地检测列和参数数据类型。四个数据适配器命令都支持 SQL 语句和过程。适配器可自动检测过程参数,并允许查找或手工定义过程的结果集。
生成数据集 支持也得到了增强,可基于数据适配器定义的形状来生成数据集定义。并且还包括为存储过程 select 命令生成数据集的功能。
数据适配器 预览数据 的新功能允许输入必要的输入参数值,然后在可更新的数据网格中显示结果。在数据适配器命令的基础上,可使用 update、delete 和 insert 命令向 DB2 服务器传播设计时进行的更新。
新的 DB2 命令编辑器包括了对文本命令和过程命令的支持。
使用文本命令时,该编辑器将利用包含了 SQL 分析器和智能感应支持的智能多行 SQL 编辑器。分析器用以检测数据列名和类型,以及 SQL 语句参数名和类型;而智能感应支持用于模式对象以及表和视图的列。
使用过程命令时,编辑器将基于所选模式以及过程参数列表,自动检索 IBM Explorer 中定义的过程。
使用数据适配器的配置向导时,您可以找到命令结果集的设置形状,或者使用导入列对话框来手工定义一个或多个结果集的形状。该对话框可从现有的表和视图中导入列。
可重用的数据适配器
DB2 Development Add-In 的新版本中,一个最好的可用性功能就是引入了可重用的数据适配器文件夹。该文件夹位于 IBM Explorer 的单个数据连接下。可跨多个 win/web 窗体以及跨多个工程使用这些数据适配器,并且可在多个用户间共享。
可重用的数据适配器的关键功能包括:
您可以使用多种方法创建新的可重用的数据适配器,包括使用 DB2 数据适配器的配置向导。该向导还能用于更改数据适配器及其命令的定义,以及数据适配器结果集的形状。
您可以为数据连接文件夹中所列的表或视图快速创建数据适配器。这可通过访问针对表或视图的 New->Data Adapter 弹出式菜单操作来完成。
在表或视图定义的基础上,可自动生成适当的 insert、update 和 delete 命令语句。
您可以为数据连接文件夹中所列的过程或函数快速创建数据适配器。这可通过访问针对过程或函数的 New->Data Adapter 弹出式菜单操作来完成。
默认情况下,不能自动生成 insert、update 和 delete 命令。但是,您可以使用数据适配器的配置向导或命令编辑器来定义这些额外的命令。
正如您可以拖放数据连接数据适配器以及将其放置在窗体设计器上一样,您也可以选择现有的窗体数据适配器,并且单击 Add to connection 操作,以便将数据适配器定义添加到适当的 IBM Explorer 数据连接。
可重用的数据适配器的一个极其强大的功能就是,可为所有的数据适配器命令或单个命令生成 IIS Web 方法。也就是指可生成适当的 C# 和 VB.NET 类文件,并将它们添加到选中的 CLR Web 工程中。
您还可以选择为数据适配器或其单个命令,生成并部署 DB2 Web 服务。DB2 嵌入式应用程序服务器将驻留这些 Web 服务。为了部署 Web 服务,还将生成自动的 WSDL 和测试 Web 客户程序。
与 %APPDATA%//IBM//vsnet//userCache.xml
下的 IBM Explorer 数据连接用户缓存器一样,可重用的数据适配器也是持久的。您可以使用 Export 菜单操作,直接从数据适配器文件夹导出一个或多个数据适配器定义(如 XML 文件)至文件系统。您还可以使用 Import 菜单操作将这些导出的数据适配器定义导入到数据连接中。
此导入/导出功能的一个有趣的用法就是,可在源代码控制管理系统中登记/注销这些数据适配器的定义。导出的文件还可被团队中其他的开发者共享。
IBM DB2 工具设置
可通过 Tools->Options->IBM DB2 Tools Visual Studio .NET 菜单访问 IBM DB2 工具选项。通过标准的 Visual Studio .NET 选项对话框,您还可以定制 DB2 Development Add-In 的各种功能。
或者,您可以通过访问 %APPDATA%//IBM//vsnet//userOptions.xml
文件来手工修改这些选项。
IBM DB2 工具选项分为了几类,例如 Code Generation,Data Access,Editor,Project 和 z/OS 选项。查看 Options 对话框或查阅 userOptions.xml
文件都可得到选项的完整列表及其描述。
结束语
DB2 Development Add-In for Visual Studio .NET Stinger Technical Preview 有望成为令人激动的功能最丰富的版本。它显示了 DB2 对于 .NET 平台和 Visual Studio .NET IDE 的承诺。该版本是针对应用程序开发者、数据库开发者、DBA 以及架构师推出的。
现在,通过功能丰富且易于使用的脚本编制向导,您可以开发 SQL 和 CLR 过程、SQL 函数、表、视图、索引以及触发器。还可以在 DB2 数据库工程中构建这些对象,或者直接从 IBM Explorer 的数据连接中构建。使用新的可重用的数据适配器,您还可以快速开发数据绑定的 win/web 窗体、Web 方法和 Web 服务。有许多新功能能让您的 DB2 应用程序开发令人愉快且十分高效。
致谢
若没有许多具才干的成员的贡献,就不可能有 DB2 Development Add-In。这些人来自于三个 IBM 实验室:特别感谢旧金山实验室的 Kreg、Addi、Sonali、Eric、Kevin、Vasantha、Ajay、Kalpana、Veera 和 Alex;特别感谢硅谷实验室的 Connie、Nancy、Tammi、Chenhong 和 Michael;特别感谢多伦多实验室的 Brent、Nancy、Kelvin、Michael、Andrew、Gustavo、Leon、Shili 和 Gene。
到页首
关于作者
Abdul Al-Azzawe 是 Visual Studio .NET 上 DB2 工具的架构师。他于 1990 年加入 IBM 并在多伦多实验室工作了十年。期间,他是特别针对 Windows 平台的 DB2 引擎开发团队的成员。2000 年 3 月,Abdul 加入了 IBM 硅谷实验室,参与设计集成了 SQL 调试器的 DB2 版本、DB2 开发中心,以及 DB2 Development Add-Ins for Visual Studio 6.0。2002 年 5 月,Abdul 又加入了 IBM 旧金山开发团队,开始构建与 Visual Studio .NET 的集成,这是他在 IBM 职业生涯中最感自豪的成就之一。 | |
IBM、DB2 和 DB2 Universal Database 是 IBM 公司在美国和/或其他国家或地区的商标或注册商标。 Windows 是 Microsoft 公司在美国和/或其他国家或地区的注册商标。 Java 和所有基于 Java 的商标和徽标是 Sun Microsystems 公司在美国和/或其他国家或地区的商标或注册商标。 UNIX 是 The Open Group 在美国和其它国家或地区的注册商标。 其他公司、产品和服务名称可能是其他公司的商标或服务标记。 |