|
一个存储库,例如关系数据库,可以为授权用户安全地共享 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 数据库。确认在 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> |
|
|