.Net开发采用DB2 XML的应用程序示例

2008-03-01 08:31:03  来源:希赛网 天狼

  一个存储库,例如关系数据库,可以为授权用户安全地共享 XML 文档和 XML 模式提供一个环境。授权用户可以在任何时候、任何地方安全地访问重要的 XML 文档和 XML 模式。通过使用可包含一个或多个关系数据库系统的存储库系统,用户可以找到并检索最新版本的 XML 文档和 XML 模式文档。DB2® 9 为 XML 提供了新的支持,对于这种新支持,.Net 应用程序开发人员可以很快地上手。这是因为 DB2 9 让程序员可以像对待关系数据那样查询、插入、更新和删除 XML 数据 —— 使用熟悉的 ADO .Net 语句和标准的查询语言。本文展示一些关于如何使用 .Net 构建采用 DB2 XML 技术的应用程序的详细示例。DB2 XML 技术允许以 XML 原有的分层格式来存储、验证和查询 XML

  DB2 中的 XML 支持

  DB2 9 为管理、存储和查询 XML 数据引入了一些新的特性和机制:

  • XML 数据类型使 DB2 可以以 XML 本身的分层格式来存储 XML 文档。
  • XML 查询语言支持基于业界标准,并包括新的对 SQL 的 XML 扩展(也称 SQL/XML)。
  • 支持基于用户提供的模式验证 XML 数据,这使得应用程序开发人员和数据库管理员可以对 DB2 中存储的 XML 数据实施数据完整性约束。本文中的例子使用 DB2 Visual Studio 2005 Add-in。

  本文中的代码示例引用了 CARPOOL 表,该表记录旧金山和圣何塞两地关于合伙用车的信息。清单 1 展示了该表的定义。另外,还需确保数据库启用了 XML

  环境设置

  注意:应确保 SAMPLE 数据库在创建时启用了 XML(见后面的定义)。

  本文需要使用 Visual Studio .NET 2005 和 DB2 9。这两个产品的安装很简单。建议先安装 Visual Studio .NET,然后再安装 DB2 9。请记住在安装 DB2 时所输入的用户 ID 和密码,因为在连接 DB2 时要使用它们。

  在 DB2 安装期间,应确保启用了 TCP/IP。如果在安装 DB2 之后不确定 TCP/IP 是否被启用,可以执行以下步骤进行检查:

  • 从 Windows Start 菜单中,选择 Programs > IBM DB2 > DB2(默认)[或者为 DB2 实例名称] > Command Line Tools > Command Window。
  • 在 DB2 命令窗口中,应该可以看到命令提示符 C:\Program Files\IBM\SQLLIB\BIN>(如果使用默认安装路径的话)。输入 db2set。在返回的结果中,应该可以看到这一行: DB2COMM=tcpip。

  如果还没有为 DB2 启用 TCP/IP,那么可以输入以下命令来启用 TCP/IP:

  • db2set db2comm=tcpip
  • db2 update dbm cfg using svcename 50000
  • db2stop
  • db2start

  安装了 DB2 之后,可以选择创建 DB2 SAMPLE 数据库。如果选择这么做,那么应接受默认设置,但务必选择 XML and SQL objects and data 选项。

  为了检查系统设置是否成功,启动 Visual Studio .NET 2005。在 Visual Studio .NET 中,选择 File > New > Project。在 New Project 对话框中,在左侧面板中应该可以看到 IBM Projects。关闭该对话框。在 Server Explorer 中,连接到 DB2 SAMPLE 数据库(具体步骤请参阅 “Develop proof-of-concept .NET applications, Part 1: Create database objects in DB2 Viper using .NET”(developerWorks,2006 年 5 月))。确认在 Server Explorer 中可以看到 XML Schema Repository 树节点。如果没有看到,那么可能需要重新创建 SAMPLE 数据库,以启用 XML 特性。

  清单 1. CARPOOL 表定义

CREATE TABLE CARPOOL (
ID INTEGER NOT NULL,
FIRSTNAME VARCHAR ( 256 ) ,
LASTNAME VARCHAR ( 256 ) ,
TITLE VARCHAR ( 15 ) ,
PHONE VARCHAR ( 20 ) ,
CARPOOLINFO XML ,
CONSTRAINT CARPOOL_PK PRIMARY KEY (ID))
 

  这里有两个 XML 模式,CarpoolInfo.xsd 和 USAddressType.xsd,其中 CarpoolInfo.xsd 引用了 USAddressType。

  清单 2. 用于验证 CARPOOL 表中的 XML 文档的 XML 模式(CarpoolInfo.xsd)

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include id="USAddress.xsd" schemaLocation="USAddress.xsd" />
  <xs:element name="CARPOOLINFO">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="StartTime" type="xs:string" />
        <xs:element name="Address" type="USAddress" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
 

  清单 3. CarpoolInfo 依赖的 XML 模式(USAddress.xsd)

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="USAddress">
    <xs:sequence>
      <xs:element name="Add1" type="xs:string">
      </xs:element>
      <xs:element name="Add2" type="xs:string">
      </xs:element>
      <xs:element name="City" type="xs:string">
      </xs:element>
      <xs:element name="State" type="xs:string">
      </xs:element>
      <xs:element name="Zip" type="xs:string">
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
 
  
  CARPOOL 表既包含基于 SQL 数据类型的列,又包含一个基于新的 DB2 XML 数据类型的列。后一个列,即 CARPOOLINFO,存储包括合伙用车者的地址和开始时间等信息的 XML 文档。图 1 展示了示例 carpoolnfo XML 文档。

  图 1. 存储在 CARPOOL 表中的示例 XML 文档

  示例 <a href='http://www.gaoqian.com/xml/'><u>XML</u></a> 文档

  现在来看看如何插入、更新和验证 CARPOOLINFO 列中的 XML 文档。清单 2 展示了一个 XML 模式,在将一个 XML 文档插入 CARPOOLINFO 列之前,需要使用这个 XML 模式对该 XML 文档进行验证。

  为了编译和运行 .Net 应用程序,需要创建一个新的 Visual Studio .Net 项目。如果之前没有使用过 Visual Studio .Net,那么可以看看下面关于如何完成这些任务的概述:

  1. 启动 Visual Studio 2005。
  2. 创建一个新项目。选择 File > New > Project。选择 Visual C# > Windows Application。
  3. 创建对 DB2 .Net 数据提供程序 IBM.Data.DB2 的引用。在 Visual Studio .Net 项目管理器中,右键单击 References 节点,选择 Add Reference。选择 Browse 选项卡,找到 IBM.Data.DB2.dll,该文件位于 DB2 安装目录中,路径为 \SQLLIB\BIN\netf20\IBM.Data.DB2.dll。

  连接数据库

  首先需要建立到目标数据库的一个连接。清单 4 是用于建立 DB2 数据库连接的一个方法的片段。

  清单 4. 建立 DB2 数据库连接

        private DB2Connection m_conn = null;
        m_conn = new DB2Connection("database=sample");
        m_conn.Open();
 

  注册 XML 模式

  DB2 9 允许用户注册 XML 模式,并在插入输入文档之前,根据这些模式对输入文档进行验证。XML 模式是 World Wide Web Consortium(W3C)业界标准的一部分。用户可以通过 XML 模式指定 XML 文档应遵从的结构,例如可接受的 XML 元素的顺序和数据类型,以及特定 XML 名称空间的使用。 DB2 Visual Studio 2005 Add-in 工具提供了一种使用简单的注册设计器来注册 XML 模式的简单方法,不过本文将展示如何使用 .Net 代码注册 XML 模式。一旦在 DB2 XML 模式库中注册了一个 XML 模式,便可以用该模式来验证 XML 文档。清单 5 展示了使用 .Net 代码注册 XML 模式的一种方法。

  清单 5. 注册 XML 模式

       //We have two xsds, CarpoolInfo.xsd and USAddress.xsd,
       //where CarpoolInfo.xsd is dependent on USAddress.xsd.
       //This XML Schema is identified as schema.xsdname.

      String[] xsdFiles = new String[2]
      {
          "CarpoolInfo.xsd",
          "USAddress.xsd"               
           
      };

      String[] schemaLocs = new String[2]
      {  
        "http://tempuri.org/CarpoolInfo.xsd",
        "USAddress.xsd"               
           
      };
          

      // Register XML schema using DB2 .Net provider connection’s
      // RegisterXmlSchema API
      m_conn.RegisterXmlSchema(schema,
                         xsdname,
                         schemaLocs,
                         xsdFiles,
                         null,
                         null,
                         false);
 

共2页: 上一页 1 [2] 下一页