蔷薇525 发表于 2018-10-17 11:53:33

SQL Server 2005 中的客户端 XML 处理

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("",
[*]XmlNodeType.Document, null));
[*]
[*]// execute update and close connection
[*]   cmd.ExecuteNonQuery();
[*]conn.Close();
[*]}
[*]}


页: [1]
查看完整版本: SQL Server 2005 中的客户端 XML 处理