次の方法で共有


SQL Server からデータを XML として取得

Microsoft SQL Server 2000 では、データの取得時に XML の機能がサポートされるようになりました。Microsoft SQL Server 2000 から XML ストリームを直接返すことができるように、.NET Framework Data Provider for SQL Server の SqlCommand オブジェクトには ExecuteXmlReader メソッドが用意されています。ExecuteXmlReader は、SqlCommand に指定された SQL ステートメントの結果が設定された System.Xml.XmlReader オブジェクトを返します。XmlReader の詳細については、「XmlReader クラス」を参照してください。ExecuteXmlReader は、次の例に示すように、結果を XML データとして返すステートメント (SQL Server 2000 FOR XML 句を含むステートメントなど) に対してだけ使用できます。

Dim custCMD As SqlCommand = New SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn)

Dim myXR As System.Xml.XmlReader = custCMD.ExecuteXmlReader()
[C#]
SqlCommand custCMD = new SqlCommand("SELECT * FROM Customers FOR XML AUTO, ELEMENTS", nwindConn);

System.Xml.XmlReader myXR = custCMD.ExecuteXmlReader();

DataSet を使用してリレーショナル データを XML として書き込んだり、DataSetXmlDataDocument と同期させてメモリ内の単一データ セットのリレーショナルな階層構造のビューをリアルタイムで提供することもできます。詳細については、「DataAdapter からの DataSet の読み込み」および「XML と DataSet」を参照してください。

DataSet を使用してデータのインメモリ リレーショナル ビュー を提供する必要がない場合、特に大量の XML データを取得する場合には、ExecuteXmlReader メソッドが適しています。ExecuteXmlReader はストリーム API であるため、DataSet を使用してリレーショナル データを XML に変換する場合のように呼び出し元に公開する前にすべてのデータを取得しキャッシュする必要がありません。

XmlReader の終了

XmlReader オブジェクトの使用が済んだら、Close メソッドを呼び出す必要があります。XmlReader が開いている間、Connection はその XmlReader によって排他的に使用されています。元の XmlReader が終了するまでは、その Connection に対してはどのコマンドも実行できません (別の XmlReader または DataReader を作成することもできません)。

参照

SqlCommand クラス | XmlReader クラス | DataAdapter からの DataSet の読み込み | XML と DataSet