程序员人生 网站导航

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

栏目:综合技术时间:2014-01-29 21:12:52
一个存储库,例如关系数据库,可以为授权用户安全地共享 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 FilesIBMSQLLIBBIN>(如果使用默认安装路径的话)。输入 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.webjx.com/xml/'><u>XML</u></a> 文档

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐