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 文檔