次の方法で共有


クライアント側での XML の処理 (SQLXML マネージド クラス)

適用対象: SQL Server Azure SQL Database

この例では、ClientSideXml プロパティの使用方法を示します。 サーバーで、アプリケーションによってストアド プロシージャが実行されると、 クライアント側でその結果 (2 列の行セット) が処理され、XML ドキュメントが生成されます。

次の GetContacts ストアド プロシージャは、AdventureWorks データベース Person.Contact テーブルの従業員の FirstName および LastName を返します。

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 変換を適用することができます。

Note

このコードでは、接続文字列で 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 を実行します。