Partilhar via


SqlCommand.ExecuteReader Método

Definição

Sobrecargas

ExecuteReader()

Envia o CommandText para o Connection e cria um SqlDataReader .

ExecuteReader(CommandBehavior)

Envia o CommandText para o Connection e cria um usando um SqlDataReader dos CommandBehavior valores .

ExecuteReader()

Envia o CommandText para o Connection e cria um 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

Retornos

Um objeto SqlDataReader.

Exceções

Um SqlDbType diferente de Binary ou VarBinary foi usado quando Value foi definido Stream como . Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

- ou -

Um SqlDbType diferente de Char, NChar, NVarChar, VarChar ou Xml foi usado quando foi definido TextReader como Value .

-ou-

Um SqlDbType diferente de Xml foi usado quando Value foi definido XmlReader como .

Exceção ao executar o comando em uma linha bloqueada. Essa exceção não é gerada quando o Microsoft .NET Framework versão 1.0 é utilizado.

- ou -

Ocorreu um tempo limite durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

O estado atual da conexão está fechado. ExecuteReader() requer um aberto SqlConnection .

- ou -

O SqlConnection foi fechado ou removido durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

Ocorreu um erro em um Stream objeto ou TextReaderXmlReader durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

O Stream objeto ou TextReaderXmlReader foi fechado durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

Exemplos

O exemplo a seguir cria um SqlCommande o executa passando uma cadeia de caracteres que é uma instrução SELECT Transact-SQL e uma cadeia de caracteres a ser usada para se conectar à fonte de dados.

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

Comentários

Quando a CommandType propriedade é definida StoredProcedurecomo , a CommandText propriedade deve ser definida como o nome do procedimento armazenado. O comando executa esse procedimento armazenado quando você chama ExecuteReader.

Observação

Se uma transação estiver em deadlock, uma exceção poderá não ser gerada até Read que seja chamada.

O recurso MARS (conjunto de resultados ativo múltiplo) permite várias ações usando a mesma conexão.

Se você usar ExecuteReader ou BeginExecuteReader para acessar dados XML, SQL Server retornará resultados XML maiores que 2.033 caracteres de comprimento em várias linhas de 2.033 caracteres cada. Para evitar esse comportamento, use ExecuteXmlReader ou BeginExecuteXmlReader para ler consultas FOR XML.

Aplica-se a

ExecuteReader(CommandBehavior)

Envia o CommandText para o Connection e cria um usando um SqlDataReader dos 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

Um dos valores de CommandBehavior.

Retornos

Um objeto SqlDataReader.

Exceções

Um SqlDbType diferente de Binary ou VarBinary foi usado quando Value foi definido Stream como . Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

- ou -

Um SqlDbType diferente de Char, NChar, NVarChar, VarChar ou Xml foi usado quando foi definido TextReader como Value .

-ou-

Um SqlDbType diferente de Xml foi usado quando Value foi definido XmlReader como .

Ocorreu um tempo limite durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

Ocorreu um erro em um Stream objeto ou TextReaderXmlReader durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

O SqlConnection foi fechado ou removido durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

O Stream objeto ou TextReaderXmlReader foi fechado durante uma operação de streaming. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).

Exemplos

O exemplo a seguir cria um SqlCommande o executa passando uma cadeia de caracteres que é uma instrução SELECT Transact-SQL e uma cadeia de caracteres a ser usada para se conectar à fonte de dados. CommandBehavior é definido como 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]));
            }
        }
    }

Comentários

Quando a CommandType propriedade é definida StoredProcedurecomo , a CommandText propriedade deve ser definida como o nome do procedimento armazenado. O comando executa esse procedimento armazenado quando você chama ExecuteReader.

Observação

Use SequentialAccess para recuperar valores grandes e dados binários. Caso contrário, um OutOfMemoryException poderá ocorrer e a conexão será fechada.

O recurso MARS (conjunto de resultados ativo múltiplo) permite várias ações usando a mesma conexão.

Se você usar ExecuteReader ou BeginExecuteReader para acessar dados XML, SQL Server retornará resultados XML maiores que 2.033 caracteres de comprimento em várias linhas de 2.033 caracteres cada. Para evitar esse comportamento, use ExecuteXmlReader ou BeginExecuteXmlReader para ler consultas FOR XML.

Aplica-se a