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

Ein SqlDbType anderes als Binary oder VarBinary wurde verwendet, wenn 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 TextReader festgelegt wurde.

Oder

Ein SqlDbType anderes als Xml wurde verwendet, wenn 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 ein Fehler in einem Stream - XmlReader oder TextReader -Objekt 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. 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.

using System;
using System.Data;
using Microsoft.Data.SqlClient;

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();
    }
}

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 Daten zurückgibt ntextnvarchar , die gültige XML-Daten oder den Inhalt einer spalte enthalten, 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 einzeilesiges, 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 an den Wert in der ersten Zeile an und verwirft den Rest des Resultsets.

Das Feature mit mehreren aktiven Resultsets (MARS) ermöglicht mehrere Aktionen mit derselben Verbindung.

Wenn Sie XML-Daten verwenden ExecuteReader oder BeginExecuteReader darauf zugreifen, 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. Verwenden Oder BeginExecuteXmlReader lesen Sie FOR XML-Abfragen, ExecuteXmlReader um dieses Verhalten zu vermeiden.

Gilt für: