WEB开发网
开发学院数据库DB2 非 Unicode 数据库中的 XML 阅读

非 Unicode 数据库中的 XML

 2009-11-28 00:00:00 来源:WEB开发网   
核心提示: 什么东西要经过转换?图 1. 转换过程的例子每当从 DB2 客户机发生任何请求到 DB2 服务器,所有字符数据(例如查询或 CHAR 主机变量)都要从客户机代码页转换为数据库代码页,非 Unicode 数据库中的 XML(6),不管请求中是否牵涉到 XML,这个过程都会发生,您已经知道了数据如何

什么东西要经过转换?


图 1. 转换过程的例子
非 Unicode 数据库中的 XML

每当从 DB2 客户机发生任何请求到 DB2 服务器,所有字符数据(例如查询或 CHAR 主机变量)都要从客户机代码页转换为数据库代码页。不管请求中是否牵涉到 XML,这个过程都会发生。

查询的 XML 部分被转换到 XML 世界,以便 XML 解析器进行解析以及 XML 值的输出(串行化)。结果则被转换到 SQL 世界。这两个转换都可能引入替换字符,即当目标代码页不能呈现代码点时插入到字符流中的替换代码点。替换字符会导致服务器上损失数据完整性。本文将寻找避免替换字符的方法。

SQL 查询的结果和串行化 XML 在传回客户机之前被转换到 SQL 世界。在这个时候,如果串行化 XML 包含数据库代码页中不能表示的字符,或者在客户机代码页中不能表示的字符,就可能引入替换字符。下面讨论避免这两种替换字符陷阱的方法。

插入 XML 文档

至此,您已经知道了数据如何转换到正确的代码页,那么,这对于插入 XML 文档有何影响呢?为了将一个 XML 文档插入到表中,可以使用一个包含 XML 数据的字符串:


清单 7. 包含 XML 数据的字符串

INSERT INTO xmlbookcat VALUES 
(0451526562, XMLPARSE (DOCUMENT '<?xml version="1.0" encoding="ISO-8859-1" ?> 
 <book> 
 <title> A Tale of Two Cities </title> 
 <author> 
  <firstname> Charles </firstname> 
  <lastname> Dickens </lastname> 
 </author> 
 <publisher> Signet Classics </publisher> 
 <date> 7/1/1997 </date> 
 <keyword> London </keyword> 
 <keyword> Sydney Carton </keyword> 
 <keyword> Paris </keyword> 
 <first_para> It was the best of times, it was the worst of times </first_para> 
|-------10--------20--------30--------40--------50--------60--------70--------80--------9| 
|-------- XML error: The previous line is longer than the max of 90 characters ---------| 
 <ISBN> 0451526562 </ISBN> 
 </book>')); 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Unicode 数据库 XML

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接