クライアント側での XML の処理 (SQLXML マネージ クラス)
この例では、ClientSideXml プロパティの使用法を示します。サーバーで、アプリケーションによってストアド プロシージャが実行されると、クライアント側でその結果 (2 列の行セット) が処理され、XML ドキュメントが生成されます。
次の GetContacts ストアド プロシージャでは、AdventureWorks データベースの Person.Contact テーブルに格納されている従業員の FirstName と LastName が返されます。
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 がインストールされている必要があります。
ストアド プロシージャを作成します。
この例で提供される C# コード (DocSample.cs) をフォルダに保存します。コードを編集し、適切なログインおよびパスワード情報を指定します。
コードをコンパイルします。コマンド プロンプトでコードをコンパイルするには、次を使用します。
csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs
これにより、実行可能ファイル (DocSample.exe) が作成されます。
コマンド プロンプトで、DocSample.exe を実行します。