DB2 中的 XML 支持
DB2 9 为管理、存储和查询 XML 数据引入了一些新的特性和机制:
本文中的代码示例引用了 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 是否被启用,可以执行以下步骤进行检查:
如果还没有为 DB2 启用 TCP/IP,那么可以输入以下命令来启用 TCP/IP:
安装了 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> |
<?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> |
图 1. 存储在 CARPOOL 表中的示例 XML 文档