使用IBM Data Studio开发数据库存储过程和Data Web Services
Table of Contents
本文主要介绍如何使用IBM Data Studio开发数据库存储过程和Data Web Services。 IBM Data Studio对数据库开发提供了完备的支持, 同时提供了把存储过程发布成Web Services的工具。 通过本文,读者可以学习到如何安装IBM Data Studio, 如何简单高效地开发和调试数据库应用程序以及如何把它们发布成Web Services。
IBM Data Studio是一款IBM新推出的用于数据库存储过程开发的工具。下面简称 它为IDS。IDS基于Eclipse 3.2,包含了开发数据库存储过程的所有功能,同时 提供了对DB2 9.0 以上XML功能的支持。本文将介绍IDS是如何帮助我们进行存储过程开发的。
安装
从IBM网站免费下载IDS安装包。解压后执行setup.exe文件。按照安装向导的提示安 装即可。这里我需要特别提示一点,IDS提供了一个开发Web Service的功能,但 是这个功能不是默认安装的。所以在选择安装软件包时需要把 Web Service开发选中。如下图所示。
ids1.png
安装完毕IDS后,我们需要安装WebSphere Application Server Community Edition (WASCE) 来运行和测试Web Service。 WASCE的安装程序位于IDS安装目录中。 如果您把IDS安装在默认路径下。那么 WASCE的安装程序就是C:\Program Files\IBM\SDP70\dsdev\bin\wasce_setup-1.1.0.2-win.exe. 通过该安装程序,您就可以安装WASCE。
为了更好地发挥IDS的功能,我们推荐安装DB2数据库客户端。 IDS可以配合DB2 v8 或者DB2 v9一起使用。 您最好在客户端安装 DB2 v9.5. 您可以从 本文中的参考资料中给出的地址下载到试用版。
DB2存储过程开发
IDS是基于Eclipse的开发工具。 运行以后的界面主要由四个区域组成:
- Data Project Explorer中会列出所有的Data project。
- Data Explorer中会列出所有的数据库连接。
- 可以在该区域编辑SQL文件和存储过程源文件。该区域是主要工作区。
- Data Output是结果输出区,在我们执行SQL语句后,数据库返回的结果会显示在该区域。
ids2.png
建立数据库连接
如果您已经安装了DB2客户端并在其中配置了一些数据库连接,那么这些连接会被IDS自动检测到并在 Data Explorer中列出来 。这样您就不必再重新定义这些连接。
创建一个新的数据库连接也是很简单的:
- 右键单击Data Explorer中的 Connections, 选择"New Connections...",
- 在新建数据库连接向导中,填入数据库的信息: 数据库地址,端口,用户名
和密码等,
- 单击"Test Connection" 按钮来测试数据库连接是否正常,
- 单击"Finish" 按钮后,一个新的数据库连接就创建完毕。
ids3.png
默认情况下IDS不会记录连接数据库的用户密码,如果您不想每次连接数据库时 都输入密码,您可以修改相应参数让IDS把数据库的用户和密码存储在您的机器 上:
- 从菜单上选择"Window -->Preferences...",
- 在弹出窗口的左边选定"Data"节点,
- 把“Password information” 设置为“Persistence Scope”。
这样,当您再次打开IDS的时候,IDS会自动连接数据库。
ids4.png
创建项目
在开始使用IDS开发存储过程前,我们首先需要创建一个Data Project:
- 右键单击Data Project Explorer,在弹出菜单上选择New-->Data Development Project。
- 输入项目名称和schema名称。这里我们输入Sample作为项目的名称,使用登 录用户ID作为项目的schema。ids5.png
- 选择数据库连接。您可以创建一个新连接,也可以使用已有的数据库。这里我们选择数据库mysample。
- 点击"Finish",一个Data Development Project就创建完毕了。ids6.png
展开Sample项目,我们可以看到在项目的根目录下有五个文件夹,分别用来存放 SQL文件,存储过程源文件,UDF源文件,Web Service文件和XML文件。
ids7.gif
执行SQL语句
我们经常会执行一些SQL语句来查询数据库中的数据。在IDS中可以很方便地执行 SQL语句。
- 我们需要创建一个SQL文件。右键单击SQL Scripts文件夹,选择“New--->SQL or Xquery scripts”。
- 在创建向导页面上输入SQL文件名称,点击"Finish"。
- 在新建的SQL文件中输入查询语句。
- 选中需要运行的SQL语句,单击右键选择“Run SQL”。SQL的执行结果会显示在Data Output视图中。
ids8.gif
默认情况下,IDS会使用项目对应的数据库连接,如果您想在其他的数据库上执 行SQL语句,您可以单击右键选择“Use Database Connection...”, 在弹出的窗口中选择你想使用的数据库。
ids9.png
代码辅助
代码辅助功能,俗称“点出来”。*IDS可以根据所连接的数据库中的信息,在你编 写SQL语句的时候,给您提示一些有用的信息。* 例如,输入schema后,IDS会弹出提示框列出该schema下所有的表名称供您选择; 输入表名后,IDS会弹出提示框列出该表中所有的字段。 如果您的应用系统中有很多表,该功能会给您很多帮助。
ids10.gif
模板
我们可以把存储过程中通用的语句抽象成模板,或者给经常使用的SQL语句起一 个别名。这样就可以在编写存储过程时减少代码输入。
在IDS中可以很方便地定义SQL模板:
- 选择菜单Window-->Preferences。
- 在弹出的参数配置页面的左侧,选择Data--->SQL Editor---> Templates。
从下图我们可以看到,IDS给我们提供了很多xquery相关的模板。
ids11.png
我们可以定义自己的模板: 1.点击“New...”按钮,IDS会弹出一个模板定义窗口。 2.输入模板的名称和内容(Pattern)等。在定义模板内容的时候,需要替 换的部分我们称为变量,变量可以使用${}进行定义 ,例如${expression}。
定义完模板后,我们就可以在编写SQL语句的时候使用它们。 1.在SQL编辑器中输入模板的名字, 2.单击右键选择“Content Assist” 或者使用快捷键 Alt+/, IDS会列出所有和你输入的名字相关的模板, 3.选中您想要的模板,IDS会把模板的内容插入到SQL编辑器中,同时会显亮模板定义中 的第一个变量, 4.修改变量的值,相同名字的变量具有相同的值,我们只需要修改一处,IDS会同步更新SQL编辑器 中其他的具有相同名字的变量的值, 5.使用TAB键跳转到下一个变量。
ids12.gif
ids13.gif
我们应该把项目中经常使用的SQL语句定义成模板,项目中的开发人员可以使用同一套模板,这样既减少了代码输入又可以保持代码风格的统一。
Visual explain
Visual explain可以帮助我们编写出高效率的SQL语句。这对于存储过程的性能 调优非常重要。IDS可以为我们提供图形化的执行计划: 1.在SQL编辑器中选中你需要分析的SQL语句,单击右键, 2.选择 “Visual Explain”,然后我们就得到了如下图所示的SQL执行计划。
ids14.png
调试存储过程
IDS为我们提供了非常优秀的调试功能。现在我们可以像调试Java程序那样调试存储过程。在IDS中针对存储过程设置断点,单步执行,查看存储过程运行时的某些变量值都变得非常简单。 为了能够调试某个存储过程,我们需要在部署该存储过程时打开“Enable Debuging” 选项:
- 在Data development项目的Stored Procedures目录中,右键单击需要调试的存储过程,选择“Deploy...”,
- 在弹出的部署向导的第二页上选中“Enable Debuging”选项,点击"Finish".
ids15.png
存储过程被部署到数据库中后,我们就可以设置断点进行调试了。 1.使用SQL编辑器打开项目中的存储过程,双击左侧栏设置断点。 2.在Data Project Explorer中右键点击存储过程,选择弹出菜单中的 "Debug..."。 3.IDS询问我们是否使用调试视图,选择“Yes”。 4.在调试视图中,我们可以点击Debug窗口中的"step into",“step over”进行单步调试,可以在Variables窗口看到当前所有变量的值。
ids16.png
Data Web Service
构建和发布Data Web Service
使用IDS,我们可以很方便的把存储过程发布成Web Service。
- 右键单击项目中的文件夹,选择“New Web Service...”。
- 在弹出的页面中输入Web Service信息,点击“Finish”。
ids12.png
ids13.png
- 把Stored Procedures文件夹
下的GET_TASKS拖到Web Service文件夹下的GetTasks上, 这样一个Web Service就构建完成了。
ids28.png
在部署该Web Service之前,我们需要设置一下WASCE。
- 选择菜单Windows--->Show View--->Others。
- 在打开的对话框中选择Server--->Servers。打开server视图。
ids27.png
- 在server视图中点击右键,选择"New--->Server"。
- 在创建server向导的第一页上,选择Websphere Application Server Community
Edition v1.1 Server,然后单击"Next"进入下一个页面。
- 指定WASCE的安装目录。点击“Finish”。WASCE就配置完成了。
ids17.png
下面我们把这个Web Service部署到WASCE中。
- 右键点击Web Service文件夹下的GetTasks,选择"Build and Deploy...",
- 在弹出的向导页面中,指定我们刚刚创建的WASCE server,
并选中“Launch Web Services Explorer afterdeployment”。
ids18.png
- 点击“Finish”, IDS会自动把我们创建的Web Service部署到WASCE上,并打开Web
Services Explorer。
ids19.png
- 打开左边树节点,选择GetTasksSOAP--->GET_TASKS。点击
右边的“Go”按钮来调用和查看Web Service。
您也可以使用浏览器访问下面的网 址来调用Web Services: http://localhost:8080/SampleGetTasks/rest/GetTasks/GET_TASKS
ids20.png
本文只是简单介绍了IDS Data Web Services。如果您希望了解更多关于Web Services的内容,请阅读参考资料中的《IBM Data Studio Data Web Services》 教程。
通过Web Service获得存储过程的源代码
在本节,我将介绍一个使用IDS Web Services的例子。
在开发存储过程时,我们经常需要查看当前数据库中的某个存储过程的源代码。 下面的存储过程可以实现该功能:
CREATE PROCEDURE VIEW_SP ( IN piSPName VARCHAR(30) ) DYNAMIC RESULT SETS 1 ------------------------------------------------------------------------ -- SQL Stored Procedure -- piSPName ------------------------------------------------------------------------ P1: BEGIN -- Declare cursor DECLARE cursor1 CURSOR WITH RETURN FOR SELECT ROUTINENAME, VARCHAR(TEXT, 32670) AS SRC FROM SYSCAT.ROUTINES WHERE ROUTINENAME = UPPER(piSPName); -- Cursor left open for client application OPEN cursor1; END P1
我们把上面的存储过程部署到数据库中,然后把它发布成Web Services:ViewSP。
ids21.png
打开浏览器后访问下面的页面: http://localhost:8080/SampleViewSP/rest/ViewSP/VIEW_SP?PISPNAME=get_tasks 。我们可以看到存储过程GET_TASKS的源代码已经通过Web Services返回来了。
ids22.png
但是页面布局不够美观。我们使用XLT来美化一下页面:
- 在Data Project Explorer中选择Sample项目,单击右键,选择”New--->XML”。
- 在向导的第一页选择“Create XML file from scratch“,单击”Next”。
- 然后选择文件夹Sample/DataServerWebServices/ViewSP/.metadata/xslt,
指定文件名为sp.xsl,单击“Finish"。
ids24.png
- 打开xsl文件,输入以下内容:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <html> <head> <title>Get Stored Procedure Source Code</title> <link rel="stylesheet" type="text/css" media="all" href="//www.ibm.com/common/v14/cn/zh/screen.css" /> </head> <body> <xsl:for-each select="*"> <xsl:for-each select="rowset/row"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <th align="left"><xsl:value-of select="ROUTINENAME"/></th> <tr> <td class="code-outline"> <pre class="displaycode"> <xsl:value-of select="SRC"/> </pre> </td> </tr> </tbody> </table> </xsl:for-each> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
- 在Data Project Explorer中选择Web Services--->ViewSP--->VIEW_SP。
- 单击右键,选择”Manage XSLT...“。
ids23.png
- 指定Output XSL文件为sp.xsl。
ids25.png
- 单击“Finish”,完成XSL文件的设置。
- 右键单击ViewSP Web Services,选择“Build and Deploy...”重新发布该Web
Service。
- 发布完成后,再次访问下面的页面:
http://localhost:8080/SampleViewSP/rest/ViewSP/VIEW_SP?PISPNAME=get_tasks 。此时,经过XSL的转换,页面就美观多了。
ids26.png
通过上面简单的例子,我们可以看到,使用IDS我们可以不用编写任何代码就可 以把存储过程或者是SQL语句发布成Web Services。其他应用程序可以通过发布 的Web Services方便的获得数据库返回的结果。我们相信Data Web Services会 是您构建您的应用程序的另一个很好的选择。
开发实例
创建表,
创建修改表的存储过程
对存储过程进行性能调节
调试bug
结束语
本文仅涵盖了IDS提供的基本功能的介绍,如果您想了解更多高级特性,你可以 阅读本文提供的参考资料,或者阅读IDS帮助文档。
可以看出IDS为数据库开发提供了非常完备的支持,希望本文能促使您开始使用 IDS,并且享受IDS给我们带来的开发存储过程的便利。