IBM最新的数据库,IBM DB2 9,引入了pureXML,一个解决使用XML进行工作的压力的本地XML特性集合。从新的XML数据类型到XQuery语言,DB2 9使得XML开发变得更加容易。
创建一个Web服务
你有几个选项来创建一个基于DB2连接的Web服务。新的插件给你一些非常好的工具来加速开发。
在VS中,创建一个到新数据库的连接。选择Tools->Connect to Database和IBM DB2,它作为安装VS 插件时的一个选项。如图8。

当增加新连接时,你可以看到如下选项:
- 选择或者键入服务器名:你可以在这里有一选项。
- 输入服务器上的信息:这可以是你在安装Express-C时指定的User ID和密码。
- 选择或者输入一个数据库名称:默认选择AJAXDEMO,如果你只是创建了唯一这个数据库,否则从下拉菜单中选择。
你可以忽略其他选项和高级属性列表。选择“Test Connection”来保证你的User ID/Password选择框是正确的,并且可以连接到表。如图9.

如果你展开新的连接和其中的一个表,你可以看到通过Visual Studio来成功的连接新的数据库,访问你的数据。右键点击Data Connections,你可以看到从IDE中,你能增加新的连接和创建新的IBM数据库。
你可能在考虑,使得,你已经创建了数据库和表,输入数据,通过你的数据连接,使用DB2 9插件。现在你知道了。但是上下文菜单更加有趣。
右键点击“HEROES_NOXML”。在诸多选项中,你可以看到两个和Web服务关联的项:“Deploy IBM Web Service”和“Generate Web Methods”(图10)。选择“Generate Web Methods”,在“Identify Database Enabled for Web Services”对话框,输入你创建数据库连接的下拉选项的服务器名,以及数据库名“AJAXDEMO”和你以前使用的用户名/密码。

在“IBM Web Service”向导中,输入“HeroData”作为Web服务名。剩下的域将会自动填写。当你创建服务的时候,DB2插件将会自动生成连接数据库的代码,并从指定的表中获取数值。你的代码有点类同List 1中的部分。注意使用IBM.Data.DB2命名空间代替System.Data.SQL。
using System; using System.Data; using System.Web.Services; using System.Web.Services.Protocols; using System.Web; using IBM.Data.DB2; using System.Data.Common;
[WebService()] [WebServiceBinding()] public class HeroData { [WebMethod()] public virtual DataSet select() { IBM.Data.DB2.DB2Connection db2Connection1 = new IBM.Data.DB2.DB2Connection(); IBM.Data.DB2.DB2DataAdapter db2DataAdapter1 = new IBM.Data.DB2.DB2DataAdapter(); IBM.Data.DB2.DB2Command db2SelectCommand1 = new IBM.Data.DB2.DB2Command(); db2Connection1.ConnectionString = "database=AJAXDEMO;user id=db2admin;server=DELL:db2c_DB2;password=changeme"; db2DataAdapter1.SelectCommand = db2SelectCommand1; db2DataAdapter1.SelectCommand.CommandType = CommandType.Text; db2DataAdapter1.SelectCommand.CommandText =@"select * from NULLID.HEROES_NOXML"; db2DataAdapter1.SelectCommand.Connection = db2Connection1; System.Data.DataSet ds = new System.Data.DataSet(); try { db2DataAdapter1.Fill(ds); } catch (DB2Exception ex) { throw ex; } finally { db2Connection1.Close(); } return ds; } } |
为了测试Web服务,编译和运行HeroData.asmx,点击“select”和“Invoke”。你可以看到一些类似图3的代码。
在Visual Studio中,经过粗略估计你大概有2079种不同的方式来连接你的数据。插件将会返回一个DataSet,如List1中所示。一般来说这就够了,特别是使用非XML数据类型。
但是当你看这个例子的时候,你有很多Ajax程序不需要的描述信息。这个特殊结果集在你用于DOM前需要一些JavaScript解析。为了便于使用,它最好是返回一个XmlDataDocument而不是一个DataSet。所以需要改变一些WebMethod代码:
- 改变方法名为“GetNoXML()”。改变名称将会出发一个工具提示下拉框允许你改变全局的名称,你应该抓住这个机会。
- 在方法声明中,将“public virtual DataSet getNoXML()”中的“DataSet”为“XmlDataDocument”。
- 在方法最后,将“return ds;”删除或者注释掉,加上如下代码:
XmlDataDocument xd = new XmlDataDocument(ds); return xd; |
这就是转变你的DataSet到XML数据的简单方法。编译,测试,结果将如图11所示——更加简短,更加易于Ajax使用。
