SqlCommand.ExecuteXmlReader メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
CommandTextをConnectionに送信し、XmlReader オブジェクトをビルドします。
public:
System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader
戻り値
XmlReader オブジェクト。
例外
ValueがStreamに設定されたときに、Binary または VarBinary 以外のSqlDbTypeが使用されました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
-又は-
ValueがTextReaderに設定されたときに、Char、NChar、NVarChar、VarChar、Xml 以外のSqlDbTypeが使用されました。
-又は-
ロックされた行に対するコマンドの実行中に例外が発生しました。 Microsoft .NET Framework バージョン 1.0 を使用している場合、この例外は生成されません。
-又は-
ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
SqlConnectionストリーミング操作中に閉じたり削除されたりします。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
ストリーミング操作中に、 Stream、 XmlReader 、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
ストリーミング操作中に、 Stream、 XmlReader 、または TextReader オブジェクトが閉じられました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
例
次の例では、 SqlCommand を作成し、 ExecuteXmlReaderを使用して実行します。 この例では、Transact-SQL FOR XML SELECT ステートメントである文字列と、データ ソースへの接続に使用する文字列が渡されます。
private static void CreateXMLReader(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(queryString, connection);
System.Xml.XmlReader reader = command.ExecuteXmlReader();
}
}
Public Sub CreateXMLReader(ByVal queryString As String, _
ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As New SqlCommand(queryString, connection)
Dim reader As System.Xml.XmlReader = command.ExecuteXmlReader
End Using
End Sub
注釈
このメソッドによって返される XmlReader は、非同期操作をサポートしていません。
CommandText プロパティは、通常、有効な FOR XML 句を持つ Transact-SQL ステートメントを指定します。 ただし、 CommandText は、有効な XML を含む ntext または nvarchar データを返すステートメント、または xml データ型で定義された列の内容を指定することもできます。
一般的な ExecuteXmlReader クエリは、次の Microsoft Visual C# の例のように書式設定できます。
SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);
このメソッドを使用して、XML データを含む単一行の単一列の結果セットを取得することもできます。 この場合、複数の行が返された場合、 ExecuteXmlReader メソッドは最初の行の値に XmlReader をアタッチし、結果セットの残りの部分を破棄します。
複数のアクティブな結果セット (MARS) 機能を使用すると、同じ接続を使用して複数のアクションを実行できます。
ExecuteReaderまたはBeginExecuteReaderを使用して XML データにアクセスする場合、SQL Server は長さが 2,033 文字を超える XML 結果を、それぞれ 2,033 文字の複数行で返します。 この動作を回避するには、 ExecuteXmlReader または BeginExecuteXmlReader を使用して FOR XML クエリを読み取ります。