クライアント側での 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 がインストールされている必要があります。
アプリケーションをテストするには
ストアド プロシージャを作成します。
この例で提供される C# コード (DocSample.cs) をフォルダーに保存します。 コードを編集し、適切なログインおよびパスワード情報を指定します。
コードをコンパイルします。 コマンド プロンプトでコードをコンパイルするには、次を使用します。
csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs
これにより、実行可能ファイル (DocSample.exe) が作成されます。
コマンド プロンプトで、DocSample.exe を実行します。