Freigeben über


SqlCommand.ExecuteXmlReader-Methode

Sendet CommandText an Connection, und erstellt ein XmlReader-Objekt.

Namespace: System.Data.SqlClient
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public Function ExecuteXmlReader As XmlReader
'Usage
Dim instance As SqlCommand
Dim returnValue As XmlReader

returnValue = instance.ExecuteXmlReader
public XmlReader ExecuteXmlReader ()
public:
XmlReader^ ExecuteXmlReader ()
public XmlReader ExecuteXmlReader ()
public function ExecuteXmlReader () : XmlReader

Rückgabewert

Ein XmlReader-Objekt.

Ausnahmen

Ausnahmetyp Bedingung

SqlException

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

Hinweise

Die CommandText-Eigenschaft gibt normalerweise eine Transact-SQL-Anweisung mit einer gültigen FOR XML-Klausel an. CommandText kann aber auch eine Anweisung angeben, die ntext-Daten oder nvarchar-Daten mit gültigem XML-Code zurückgibt oder den Inhalt einer mit dem xml-Datentyp definierten Spalte.

Eine normale 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);

Hinweis

Dieser Abfragetyp funktioniert nur bei Microsoft SQL Server 2000 oder höher. Weitere Informationen finden Sie in der SQL Server-Onlinedokumentation unter "Guidelines for Using the FOR XML Clause" (nur auf Englisch verfügbar).

Diese Methode kann, wenn sie mit SQL Server 2005 verwendet wird, auch ein Resultset mit XML-Daten aus einer Zeile und einer Spalte abrufen. Wenn in diesem Fall mehr als eine Zeile zurückgegeben wird, fügt die ExecuteXmlReader-Methode den XmlReader an den Wert der ersten Zeile an und verwirft das restliche Resultset.

Wenn Sie eine Vorgängerversion von SQL Server 2005 und XmlReader verwenden, ist die zugehörige SqlConnection durch den Informationsfluss für den XmlReader belegt. In diesem Zustand können über die SqlConnection keine Operationen ausgeführt werden. Die Verbindung kann nur geschlossen werden. Dies gilt solange, bis die Close-Methode des XmlReader aufgerufen wird. Ab SQL Server 2005 ist es mithilfe des MARS-Features (Multiple Active Result Set) möglich, dass mehrere Aktionen dieselbe Verbindung verwenden.

Wenn Sie mit ExecuteReader oder BeginExecuteReader auf XML-Daten zugreifen, gibt SQL Server alle XML-Ergebnisse, die länger als 2.033 Zeichen sind, in mehreren Zeilen mit jeweils 2.033 Zeichen zurück. Um dieses Verhalten zu vermeiden, verwenden ExecuteXmlReader oder BeginExecuteXmlReader für das Lesen von FOR XML-Abfragen. Weitere Informationen finden Sie in der Microsoft Knowledge Base im Artikel Q310378, "PRB: XML Data Is Truncated When You Use SqlDataReader" unter http://support.microsoft. (nur auf Englisch verfügbar).

Beispiel

Im folgenden Beispiel wird ein SqlCommand erstellt und dieser anschließend mit ExecuteXmlReader ausgeführt. Im Beispiel wird eine Transact-SQL-FOR XML-Anweisung als Zeichenfolge sowie eine Zeichenfolge übergeben, mit der die Verbindung mit der Datenquelle hergestellt wird.

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

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

SqlCommand-Klasse
SqlCommand-Member
System.Data.SqlClient-Namespace

Weitere Ressourcen

Verbinden und Abrufen von Daten mit ADO.NET
Verwenden des .NET Framework-Datenanbieters für SQL Server