在客户端处理 XML(SQLXML 托管类)

该示例说明 ClientSideXml 属性的用法。应用程序在服务器上执行存储过程。在客户端对存储过程的结果(一个有两列的行集)进行处理,以产生 XML 文档。

以下 GetContacts 存储过程返回在 AdventureWorks 数据库的 Person.Contact 表中雇员的 FirstNameLastName

USE AdventureWorks
CREATE PROCEDURE GetContacts @LastName varchar(20)
AS
SELECT FirstName, LastName
FROM   Person.Contact
WHERE LastName = @LastName
Go

该 C# 应用程序执行此存储过程,并在指定 CommandText 值时指定 FOR XML AUTO 选项。在此应用程序中,SqlXmlCommand 对象的 ClientSideXml 属性设置为 true。这将允许执行预先存在的存储过程,然后由存储过程返回行集,并在客户端上对它执行 XML 转换。

注意注意

在该代码中,必须在连接字符串中提供 Microsoft SQL Server 实例的名称。

using System;
using Microsoft.Data.SqlXml;
using System.IO;
class Test
{
    static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";
      public static int testParams()
      {
         //Stream strm;
         SqlXmlParameter p;
         SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
         cmd.ClientSideXml = true;
         cmd.CommandText = "EXEC GetContacts ? FOR XML NESTED";
         p = cmd.CreateParameter();
         p.Value = "Achong";
         using (Stream strm = cmd.ExecuteStream()) 
         {
            using (StreamReader sr = new StreamReader(strm))
                  {
               Console.WriteLine(sr.ReadToEnd());
            }
         }
         return 0;
      }

public static int Main(String[] args)
{
    testParams();
    return 0;
}
}

若要测试本示例,必须已在计算机上安装了 Microsoft .NET Framework。

测试应用程序

  1. 创建存储过程。

  2. 将本示例中提供的 C# 代码 (DocSample.cs) 保存在某个文件夹中。编辑代码,以指定合适的登录和密码信息。

  3. 编译代码。若要在命令提示符下编译代码,请使用:

    csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs
    

    这将创建一个可执行文件 (DocSample.exe)。

  4. 在命令提示符下,执行 DocSample.exe。