Freigeben über


SqlCommand.ExecuteReader Methode

Definition

Überlädt

ExecuteReader()

Sendet an CommandText die Connection und erstellt eine SqlDataReader .

ExecuteReader(CommandBehavior)

Sendet die CommandText an die Connection - und erstellt einen SqlDataReader mit einem der CommandBehavior -Werte.

ExecuteReader()

Sendet an CommandText die Connection und erstellt eine SqlDataReader .

public:
 Microsoft::Data::SqlClient::SqlDataReader ^ ExecuteReader();
public Microsoft.Data.SqlClient.SqlDataReader ExecuteReader ();
override this.ExecuteReader : unit -> Microsoft.Data.SqlClient.SqlDataReader
Public Function ExecuteReader () As SqlDataReader

Gibt zurück

Ein SqlDataReader-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 anderer 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).

Der aktuelle Zustand der Verbindung ist "Geschlossen". ExecuteReader() erfordert eine geöffnete SqlConnection .

- oder -

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 SqlCommanderstellt und anschließend ausgeführt, indem eine Zeichenfolge übergeben wird, bei der es sich um eine Transact-SQL SELECT-Anweisung handelt, und eine Zeichenfolge, die zum Herstellen einer Verbindung mit der Datenquelle verwendet werden soll.

// <Snippet1>
using System;
using System.Data;
using Microsoft.Data.SqlClient;



class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
        CreateCommand(qs, str);
    }

    private static void CreateCommand(string queryString,
        string connectionString)
    {
        using (SqlConnection connection = new SqlConnection(
                   connectionString))
        {
            connection.Open();

            SqlCommand command = new SqlCommand(queryString, connection);
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}", reader[0]));
            }
        }
    }
    // </Snippet1>
}

Hinweise

Wenn die CommandType -Eigenschaft auf StoredProcedurefestgelegt ist, sollte die CommandText -Eigenschaft auf den Namen der gespeicherten Prozedur festgelegt werden. Der Befehl führt diese gespeicherte Prozedur aus, wenn Sie aufrufen ExecuteReader.

Hinweis

Wenn eine Transaktion deadlocked ist, wird möglicherweise erst dann eine Ausnahme ausgelöst, wenn Read aufgerufen wird.

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:

ExecuteReader(CommandBehavior)

Sendet die CommandText an die Connection - und erstellt einen SqlDataReader mit einem der CommandBehavior -Werte.

public:
 Microsoft::Data::SqlClient::SqlDataReader ^ ExecuteReader(System::Data::CommandBehavior behavior);
public Microsoft.Data.SqlClient.SqlDataReader ExecuteReader (System.Data.CommandBehavior behavior);
override this.ExecuteReader : System.Data.CommandBehavior -> Microsoft.Data.SqlClient.SqlDataReader
Public Function ExecuteReader (behavior As CommandBehavior) As SqlDataReader

Parameter

behavior
CommandBehavior

Einer der CommandBehavior-Werte.

Gibt zurück

Ein SqlDataReader-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 anderer als Xml wurde verwendet, wenn Value auf XmlReader festgelegt wurde.

Bei einem Streamingvorgang ist ein Timeout aufgetreten. 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).

Die SqlConnection wurde während eines Streamingvorgangs geschlossen oder getrennt. 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 SqlCommanderstellt und anschließend ausgeführt, indem eine Zeichenfolge übergeben wird, bei der es sich um eine Transact-SQL SELECT-Anweisung handelt, und eine Zeichenfolge, die zum Herstellen einer Verbindung mit der Datenquelle verwendet werden soll. Für CommandBehavior ist CloseConnection festgelegt.

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

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
        CreateCommand(qs, str);
    }

    private static void CreateCommand(string queryString,
        string connectionString)
    {
        using (SqlConnection connection = new SqlConnection(
                   connectionString))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();
            SqlDataReader reader =
                command.ExecuteReader(CommandBehavior.CloseConnection);
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}", reader[0]));
            }
        }
    }

Hinweise

Wenn die CommandType -Eigenschaft auf StoredProcedurefestgelegt ist, sollte die CommandText -Eigenschaft auf den Namen der gespeicherten Prozedur festgelegt werden. Der Befehl führt diese gespeicherte Prozedur aus, wenn Sie aufrufen ExecuteReader.

Hinweis

Verwenden Sie SequentialAccess , um große Werte und Binärdaten abzurufen. Andernfalls tritt möglicherweise ein OutOfMemoryException auf, und die Verbindung wird geschlossen.

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: