扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共2页)
一个存储库,例如关系数据库,可以为授权用户安全地共享 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)
elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
清单 3. CarpoolInfo 依赖的 XML 模式(USAddress.xsd)
elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
CARPOOL 表既包含基于 SQL 数据类型的列,又包含一个基于新的 DB2 XML 数据类型的列。后一个列,即 CARPOOLINFO,存储包括合伙用车者的地址和开始时间等信息的 XML 文档。图 1 展示了示例 carpoolnfo XML 文档。
图 1. 存储在 CARPOOL 表中的示例 XML 文档
现在来看看如何插入、更新和验证 CARPOOLINFO 列中的 XML 文档。清单 2 展示了一个 XML 模式,在将一个 XML 文档插入 CARPOOLINFO 列之前,需要使用这个 XML 模式对该 XML 文档进行验证。
为了编译和运行 .Net 应用程序,需要创建一个新的 Visual Studio .Net 项目。如果之前没有使用过 Visual Studio .Net,那么可以看看下面关于如何完成这些任务的概述:
启动 Visual Studio 2005。
创建一个新项目。选择 File >New >Project。选择 Visual C# >Windows Application。
创建对 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);
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者