Freigeben über


SqlCommand.ExecuteXmlReader Methode

Definition

Sendet das CommandText Objekt an das Connection Objekt und erstellt es XmlReader .

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

Gibt zurück

Ein XmlReader-Objekt.

Ausnahmen

Eine SqlDbType andere als Binary oder VarBinary wurde verwendet, als Value auf Stream. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

- oder -

Eine SqlDbType andere als Char, NChar, NVarChar, VarChar oder Xml wurde verwendet, als Value festgelegt TextReaderwurde.

- oder -

Eine SqlDbType andere als XML wurde verwendet, als Value auf XmlReader".

Ausnahme beim Ausführen des Befehls für eine gesperrte Zeile. Diese Ausnahme wird nicht generiert, wenn Sie Microsoft .NET Framework, Version 1.0 verwenden.

- oder -

Während eines Streamingvorgangs ist ein Timeout aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Das SqlConnection Schließen oder Ablegen während eines Streamingvorgangs. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Fehler in einem StreamOder XmlReaderTextReader Objekt während eines Streamingvorgangs. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Das StreamObjekt XmlReader wurde TextReader während eines Streamingvorgangs geschlossen. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support.

Beispiele

Im folgenden Beispiel wird ein SqlCommand Und dann mithilfe ExecuteXmlReadervon . Das Beispiel wird eine Zeichenfolge übergeben, die eine Transact-SQL FOR XML SELECT-Anweisung ist, und eine Zeichenfolge, die zum Herstellen einer Verbindung mit der Datenquelle verwendet werden soll.

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

Hinweise

Der von dieser Methode zurückgegebene XmlReader unterstützt keine asynchronen Vorgänge.

Die CommandText Eigenschaft gibt in der Regel eine Transact-SQL-Anweisung mit einer gültigen FOR XML-Klausel an. Kann jedoch auch eine Anweisung angeben, CommandText die gültige XML-Daten oder nvarchar den Inhalt einer Spalte zurückgibtntext, die mit dem xml Datentyp definiert ist.

Eine typische ExecuteXmlReader Abfrage kann wie im folgenden Microsoft Visual C#-Beispiel formatiert werden:

SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);

Diese Methode kann auch verwendet werden, um ein einspaltiges Resultset abzurufen, das XML-Daten enthält. Wenn in diesem Fall mehr als eine Zeile zurückgegeben wird, fügt die ExecuteXmlReader Methode den XmlReader Wert in der ersten Zeile an und verwirft den Rest des Resultsets.

Das Feature für mehrere aktive Resultset (MARS) ermöglicht mehrere Aktionen mit derselben Verbindung.

Wenn Sie XML-Daten verwenden ExecuteReader oder BeginExecuteReader darauf zugreifen, gibt SQL Server alle XML-Ergebnisse zurück, die größer als 2.033 Zeichen in mehreren Zeilen mit jeweils 2.033 Zeichen sind. Verwenden Oder BeginExecuteXmlReader lesen Sie ExecuteXmlReader FOR XML-Abfragen, um dieses Verhalten zu vermeiden.

Gilt für:

Weitere Informationen