Freigeben über


SqlCommand.ExecuteXmlReader Methode

Definition

Sendet CommandText an Connection und erstellt ein XmlReader-Objekt.

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

Es wurde ein anderer SqlDbType als Binary oder VarBinary verwendet, als Value auf Stream festgelegt wurde. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

- oder -

Ein SqlDbType anderes als Char, NChar, NVarChar, VarChar oder Xml wurde verwendet, wenn Value auf TextReaderfestgelegt wurde.

- oder -

Es wurde ein anderer SqlDbType als Xml verwendet, als Value auf XmlReader festgelegt wurde.

Beim Ausführen des Befehls für eine gesperrte Zeile ist eine Ausnahme aufgetreten. Diese Ausnahme tritt in Microsoft .NET Framework 1.0 nicht auf.

- oder -

Bei einem Streamingvorgang ist ein Timeout aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Die SqlConnection wurde während eines Streamingvorgangs geschlossen oder getrennt. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Während eines Streamingvorgangs ist bei einem Stream-, XmlReader- oder TextReader-Objekt ein Fehler aufgetreten. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Das Stream-, XmlReader- oder TextReader-Objekt wurde während eines Streamingvorgangs geschlossen. Weitere Informationen zum Streaming finden Sie unter SqlClient Streaming Support (SqlClient-Streamingunterstützung).

Beispiele

Im folgenden Beispiel wird ein SqlCommand erstellt und dann mit ExecuteXmlReaderausgeführt. Im Beispiel wird eine Zeichenfolge übergeben, bei der es sich um eine Select-Anweisung von Transact-SQL FOR XML handelt, 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 normalerweise eine Transact-SQL-Anweisung mit einer gültigen FOR XML-Klausel an. Kann jedoch auch eine Anweisung angeben, CommandText die oder nvarchar Daten zurückgibtntext, die gültiges XML enthalten, oder den Inhalt einer Spalte, 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 einzeileniges, einspaltiges Resultset abzurufen, das XML-Daten enthält. Wenn in diesem Fall mehr als eine Zeile zurückgegeben wird, fügt die ExecuteXmlReader -Methode an XmlReader den Wert in der ersten Zeile an und verwirft den Rest des Resultsets.

Die Mars-Funktion (Multiple Active Result Set) ermöglicht mehrere Aktionen, die dieselbe Verbindung verwenden.

Wenn Sie oder BeginExecuteReader für den Zugriff auf XML-Daten verwendenExecuteReader, gibt SQL Server xml-Ergebnisse mit einer Länge von mehr als 2.033 Zeichen in mehreren Zeilen mit jeweils 2.033 Zeichen zurück. Um dieses Verhalten zu vermeiden, verwenden Sie ExecuteXmlReader oder BeginExecuteXmlReader , um FOR XML-Abfragen zu lesen.

Gilt für:

Weitere Informationen