• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> 数据库 >> MySQL >> 详细内容
 

推荐文章

  • 《MySQL管理员指南》之一----MySQL安全性指南
  • 实例讲解MYSQL数据库的查询优化技术
  • MySQL查询优化技术讲座
 
 

热点文章

  • 支持中文的MySQL 5.1+ 全文检索分词插件
  • MySQL数据导入导出方法与工具mysqlimport
  • 《MySQL管理员指南》之一----MySQL安全性指南
  • MySql管理的一点心得&MYSQL命令行模式
  • 修改MySQL的默认密码
  • 使用 SQL Server 2005中的 CLR 集成
  • 使用MySQL全文检索
  • Microsoft SQL Server 2005 中的 XML 支持
  • 简介Mysql中的临时表使用方法
  • MySQL查询优化系列讲座之查询优化器
  • 使用Excel分析MySQL数据
  • MySQL的常见错误的解决方法(英文)
 
 

相关文章

  • 使用Microsoft SQL Server 2005 构建更好的应用程序
 
 

百度搜索

 
 

Microsoft SQL Server 2005 中的 XML 支持

  • 阅览次数:
  • 文章来源: cp整理
  • 原文作者: 不详
  • 整理日期: 2007-04-03
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

 

四、SQL Server 2005 中的客户端 XML 处理

XML 数据类型的客户端支持

.NET 框架 V2.0 中的 ADO.NET XML 支持

在 SqlDataReader.GetSqlXml() 方法的 System.Data.SqlTypes 命名空间中,XML 数据类型是作为类 SqlXml 公开的。可以使用 SqlXml.CreateReader() 函数从 SqlXml 对象获得 XmlReader。

类型化 XML 列的 XML 架构集合的名称由三部分组成,可以从 XML 列的元数据中获得(通过使用 SqlDataReader 对象中的 GetSchemaTable() 或 GetSqlMetaData (int)),其三个部分作为三个属性,分别表示数据库 (XmlSchemaCollectionDatabase)、关系架构 (XmlSchemaCollectionOwingSchema) 和 XML 架构集合 (XmlSchemaCollectionName) 的名称。

客户端可以使用新的架构行集 XMLSCHEMA 从服务器检索 XML 架构。XMLSCHEMA 行集包含 XML 架构集合、目标命名空间和 XML 架构内容本身这样三列。

下面的示例显示了用于对 XML 数据类型进行托管访问的主干代码。

例:对 XML 数据类型进行进程内访问

下面的 C# 代码演示了如何从进程内提供程序访问 XML 数据类型。用于 SQL 客户端访问的代码需要适当地改变进程内访问。

using System;
using System.Xml;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlServer;

class xmldtADONETReadAccessInProc
{
   static void ReadXmlDataType () {
      // in-proc connection to server
      SqlConnection conn = SqlContext.GetConnection();

      // prepare query to select xml data
      SqlCommand cmd = conn.CreateCommand();
      cmd.CommandText = "SELECT xCol FROM docs";

      // execute query and retrieve incoming data
      SqlDataReader r = cmd.ExecuteReader();
      r.Read();

      // access XML data type field in rowset
      SqlXml xml = r.GetSqlXml(0);
      new XmlTextWriter(Console.Out).WriteNode( 
xml.CreateReader(), true);
   }
}

例:使用 SQL 客户端提供程序更新 XML 数据类型列

下面的代码所显示的 WriteXmlDaraType() 方法使用 SQL 客户端程序提供程序来替换 XML 列中的值。用于进程内提供程序的代码是相似的。

using System;
using System.Xml;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;

class xmldtADONETUpdateAccess
{
   static void WriteXmlDataType () {
      // connection to server
      SqlConnection conn = new SqlConnection("server=server1;" +
" database=XMLtest; Integrated Security=SSPI");
      conn.Open();

   // update XML column at the server
   SqlCommand cmd = conn.CreateCommand();
   cmd.CommandText = "UPDATE docs SET xCol=@x WHERE id=1";

// set value of XML parameter
   SqlParameter p = cmd.Parameters.Add("@x", SqlDbType.Xml);
p.Value = new SqlXml(new XmlTextReader("<hello/>", 
XmlNodeType.Document, null));

// execute update and close connection
   cmd.ExecuteNonQuery();
conn.Close();
}
}

SQL 本机客户端访问

在新的 SQL 本机访问 (SQLNCLI) 的 OLE DB 提供程序中,可以通过 ISequentialStream 来将 XML 数据类型列作为 Unicode 字符串(DBTYPE_XML、DBTYPE_BSTR、DBTYPE_WSTR 和 DBTYPE_VARIANT)或 Unicode 字符串流进行检索。默认为 DBTYPE_XML。

由三部分组成的 XML 架构集合名称是在由 IDBSchemaRowset::GetRowset() 返回的 COLUMNS 架构行集的三个新列中携带的:SS_XML_CATALOGNAME 给出目录的名称;SS_XML_SCHEMANAME 给出 XML 架构集合所驻留的关系架构的名称;SS_XML_SCHEMACOLLECTIONNAME 给出 XML 架构集合的名称。这些名称都属于 DBTYPE_WSTR 类型。对于非类型化的 XML 列,这些列具有 NULL 值。

可以对 PROCEDURE_PARAMETERS 架构行集和 IColumnRowset:GetColumnRowset() 进行类似的改变。

要检索 XML 架构集合的内容,客户端可以通过在对 XML_SCHEMA_NAMESPACE() 的调用中使用这些名称来单独访问服务器,并且返回 XML 架构作为 XML 数据类型。另外,带有新的 SS_XMLSCHEMA 架构行集的 IDBSchemaRowset 可以返回目录的名称、关系架构的名称、XML 架构集合的名称、目标命名空间和 XML 架构。

要使用 SQLNCLI 进行 ODBC 访问,需要将 XML 数据类型映射到名为 SQL_SS_XML 的 Unicode 可变长度字符数据。由三部分组成的 XML 架构集合的名称是通过用于 XML 列的 SqlColAttribute 作为 CharacterAttributePtr 出现的。这些字段标识符为 SQL_DESC_SS_XML_SCHEMA_CATALOG_NAME、SQL_DESC_SS_XML_SCHEMA_SCHEMA_NAME 和 SQL_DESC_SS_XML_SCHEMA_COLLECTION_NAME,分别用于数据库、关系架构和 XML 架构集合的名称。

用户必须安装 SQL Server 2005 版的数据库服务器或客户端工具才能获取 SQL 本机客户端。在撰写本文时,还不能使用 MDAC 2.8 ADO 对 XML 数据类型进行 OLE DB 访问。

 

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

上一篇:PHP使用zlib扩展实现页面GZIP压缩输出
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号