次の方法で共有


SqlCommand.ExecuteXmlReader メソッド

定義

CommandTextConnectionに送信し、XmlReader オブジェクトをビルドします。

public:
 System::Xml::XmlReader ^ ExecuteXmlReader();
public System.Xml.XmlReader ExecuteXmlReader();
member this.ExecuteXmlReader : unit -> System.Xml.XmlReader
Public Function ExecuteXmlReader () As XmlReader

戻り値

XmlReader オブジェクト。

例外

ValueStreamに設定されたときに、Binary または VarBinary 以外のSqlDbTypeが使用されました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

-又は-

ValueTextReaderに設定されたときに、CharNCharNVarCharVarChar、Xml 以外SqlDbTypeが使用されました。

-又は-

xml 以外のSqlDbTypeは、ValueXmlReader に設定されたときに使用されました。

ロックされた行に対するコマンドの実行中に例外が発生しました。 Microsoft .NET Framework バージョン 1.0 を使用している場合、この例外は生成されません。

-又は-

ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

SqlConnectionストリーミング操作中に閉じたり削除されたりします。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または 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 クエリを読み取ります。

適用対象

こちらもご覧ください