SqlCommand.ExecuteReader Método

Definición

Sobrecargas

ExecuteReader()

CommandText Envía a Connection y compila un SqlDataReader objeto .

ExecuteReader(CommandBehavior)

CommandText Envía a y Connection crea un SqlDataReader objeto mediante uno de los CommandBehavior valores .

ExecuteReader()

CommandText Envía a Connection y compila un SqlDataReader objeto .

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

Devoluciones

Un objeto SqlDataReader.

Excepciones

Se usó un SqlDbType valor distinto de Binary o VarBinary cuando Value se estableció Stream en . Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

o bien

Un SqlDbType valor distinto de Char, NChar, NVarChar, VarChar o Xml se usó cuando Value se estableció TextReader en .

O bien

Se usó un SqlDbType valor distinto de Xml cuando Value se estableció en XmlReader .

Se produjo una excepción al ejecutar el comando contra una fila bloqueada. Esta excepción no se genera cuando se usa Microsoft .NET Framework versión 1.0.

o bien

Se agotó el tiempo de espera durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

El estado actual de la conexión es cerrado. ExecuteReader()requiere un .SqlConnection

o bien

La SqlConnection se cerró o se interrumpió durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

Error en un Stream objeto o XmlReaderTextReader durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

El Stream objeto , XmlReader o TextReader se cerró durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

Ejemplos

En el ejemplo siguiente se crea un SqlCommandy, a continuación, se ejecuta pasando una cadena que es una instrucción SELECT de Transact-SQL y una cadena que se va a usar para conectarse al origen de datos.

// <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>
}

Comentarios

Cuando la CommandType propiedad se establece StoredProcedureen , la CommandText propiedad debe establecerse en el nombre del procedimiento almacenado. El comando ejecuta este procedimiento almacenado cuando se llama a ExecuteReader.

Nota:

Si una transacción está interbloqueada, es posible que no se produzca una excepción hasta Read que se llame a .

La característica conjunto de resultados activo múltiple (MARS) permite varias acciones mediante la misma conexión.

Si usa ExecuteReader o BeginExecuteReader para obtener acceso a datos XML, SQL Server devolverá cualquier resultado XML superior a 2033 caracteres de longitud en varias filas de 2033 caracteres cada uno. Para evitar este comportamiento, use ExecuteXmlReader o BeginExecuteXmlReader para leer consultas FOR XML.

Se aplica a

ExecuteReader(CommandBehavior)

CommandText Envía a y Connection crea un SqlDataReader objeto mediante uno de los CommandBehavior valores .

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

Parámetros

behavior
CommandBehavior

Uno de los valores de CommandBehavior.

Devoluciones

Un objeto SqlDataReader.

Excepciones

Se usó un SqlDbType valor distinto de Binary o VarBinary cuando Value se estableció Stream en . Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

o bien

Un SqlDbType valor distinto de Char, NChar, NVarChar, VarChar o Xml se usó cuando Value se estableció TextReader en .

O bien

Se usó un SqlDbType valor distinto de Xml cuando Value se estableció en XmlReader .

Se agotó el tiempo de espera durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

Error en un Stream objeto o XmlReaderTextReader durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

La SqlConnection se cerró o se interrumpió durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

El Stream objeto , XmlReader o TextReader se cerró durante una operación de streaming. Para obtener más información sobre el streaming, vea Compatibilidad de transmisión de datos de SqlClient.

Ejemplos

En el ejemplo siguiente se crea un SqlCommandy, a continuación, se ejecuta pasando una cadena que es una instrucción SELECT de Transact-SQL y una cadena que se va a usar para conectarse al origen de datos. El valor de CommandBehavior está establecido en CloseConnection.

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

Comentarios

Cuando la CommandType propiedad se establece StoredProcedureen , la CommandText propiedad debe establecerse en el nombre del procedimiento almacenado. El comando ejecuta este procedimiento almacenado cuando se llama a ExecuteReader.

Nota:

Use SequentialAccess para recuperar valores grandes y datos binarios. De lo contrario, podría producirse una OutOfMemoryException excepción y se cerrará la conexión.

La característica conjunto de resultados activo múltiple (MARS) permite varias acciones mediante la misma conexión.

Si usa ExecuteReader o BeginExecuteReader para obtener acceso a datos XML, SQL Server devolverá cualquier resultado XML superior a 2033 caracteres de longitud en varias filas de 2033 caracteres cada uno. Para evitar este comportamiento, use ExecuteXmlReader o BeginExecuteXmlReader para leer consultas FOR XML.

Se aplica a