繁体中文
设为首页
加入收藏

推荐

公告

推荐文章
· XML无处不在——DB2 9给...
· DB2 9.5 提供给 .NET开发...
· 基于 pureXML 技术的数据...
· Rational Portfolio Man...
· DB2 9 中基于字符的字符...
· DB2 9和ASP.NET2.0构建下...
· DB2 9和ASP.NET2.0构建下...
· DB2 9 pureXML 性能解析
· 在DB2上建立database Pa...
· 抢先体会Oracle 11g的新特性
热点文章
广告

当前位置:设计首页 >> 程序开发 >> 数据库 >> XML无处不在——DB2 9给予你掌握它的力量

XML无处不在——DB2 9给予你掌握它的力量 (4)

2008-01-05 08:59:42  作者:  来源:互联网  浏览次数:32  文字大小:【】【】【
简介:  前言  XML不是新概念了。感谢诸如Ajax这样的新技术,使得它在过去的一些年里发展迅速。但是奇怪的是,到目前为止,数据库却拥有非常少的本地XML特性。  IBM最新的数据库,IBM DB2 9,引入了pureXML,一 ...
关键字:力量
   创建一个Web服务

  你有几个选项来创建一个基于DB2连接的Web服务。新的插件给你一些非常好的工具来加速开发。

   在VS中,创建一个到新数据库的连接。选择Tools->Connect to Database和IBM DB2,它作为安装VS 插件时的一个选项。如图8。

Connect to Database



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

Test Connection



   如果你展开新的连接和其中的一个表,你可以看到通过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”和你以前使用的用户名/密码。

db2



   在“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代码:
  1. 改变方法名为“GetNoXML()”。改变名称将会出发一个工具提示下拉框允许你改变全局的名称,你应该抓住这个机会。
  2. 在方法声明中,将“public virtual DataSet getNoXML()”中的“DataSet”为“XmlDataDocument”。
  3. 在方法最后,将“return ds;”删除或者注释掉,加上如下代码:
XmlDataDocument xd = new XmlDataDocument(ds);
return xd;

   这就是转变你的DataSet到XML数据的简单方法。编译,测试,结果将如图11所示——更加简短,更加易于Ajax使用。

DataSet到XML


[1] [2] [3] [4] [5] [6] [7] [8]


相关文章