適用対象:SQL Server
Azure SQL データベース
この例では、ClientSideXml プロパティの使用方法を示します。 サーバーで、アプリケーションによってストアド プロシージャが実行されると、 クライアント側でその結果 (2 列の行セット) が処理され、XML ドキュメントが生成されます。
次の GetContacts ストアド プロシージャは、AdventureWorks データベース Person.Contact テーブルの従業員の FirstName および LastName を返します。
Note
Azure SQL DatabaseやMicrosoft FabricのSQLデータベースでは、USE文は利用できません。 代わりに、意図したデータベースに直接接続し、残りのコードサンプルを実行してください。
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 を実行します。