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

适用于: SQL Server Azure SQL 数据库

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

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

USE AdventureWorks2022;
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。