SqlCommand.ExecuteReader Método

Definição

Envia o CommandText para o Connection e cria um SqlDataReader.Sends the CommandText to the Connection and builds a SqlDataReader.

Sobrecargas

ExecuteReader()

Envia o CommandText para o Connection e cria um SqlDataReader.Sends the CommandText to the Connection and builds a SqlDataReader.

ExecuteReader(CommandBehavior)

Envia o CommandText para o Connection e cria um SqlDataReader usando um dos valores de CommandBehavior.Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

ExecuteReader()

Envia o CommandText para o Connection e cria um SqlDataReader.Sends the CommandText to the Connection and builds a SqlDataReader.

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

Retornos

SqlDataReader

Um objeto SqlDataReader .A SqlDataReader object.

Exceções

Um SqlDbType diferente de Binary ou VarBinary foi usado quando Value foi definido como Stream.A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

-ou--or-

Um SqlDbType diferente de Char, NChar, NVarChar, VarChar ou Xml foi usado quando Value foi definido como TextReader.A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

-ou--or-

Um SqlDbType diferente de Xml foi usado quando Value foi definido como XmlReader.A SqlDbType other than Xml was used when Value was set to XmlReader.

Exceção ao executar o comando em uma linha bloqueada.An exception occurred while executing the command against a locked row. Essa exceção não é gerada quando o Microsoft .NET Framework versão 1.0 é utilizado.This exception is not generated when you are using Microsoft .NET Framework version 1.0.

-ou--or-

Ocorreu um tempo limite durante uma operação de streaming.A timeout occurred during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

O estado atual da conexão está fechado.The current state of the connection is closed. ExecuteReader() exige um SqlConnection aberto.ExecuteReader() requires an open SqlConnection.

-ou--or-

O SqlConnection foi fechado ou removido durante uma operação de streaming.The SqlConnection closed or dropped during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

Ocorreu um erro em um objeto Stream, XmlReader ou TextReader durante uma operação de streaming.An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

O objeto Stream, XmlReader ou TextReader foi fechado durante uma operação de streaming.The Stream, XmlReader or TextReader object was closed during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

Exemplos

O exemplo a seguir cria um SqlCommande, em seguida, executa-o passando uma cadeia de caracteres que é uma instrução SELECT do Transact-SQL e uma cadeia de caracteres a ser usada para se conectar à fonte de dados.The following example creates a SqlCommand, and then executes it by passing a string that is a Transact-SQL SELECT statement, and a string to use to connect to the data source.

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]));
        }
    }
}
Public Sub CreateCommand(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 SqlDataReader = command.ExecuteReader()
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

Comentários

Quando a propriedade CommandType é definida como StoredProcedure, a propriedade CommandText deve ser definida como o nome do procedimento armazenado.When the CommandType property is set to StoredProcedure, the CommandText property should be set to the name of the stored procedure. O comando executa esse procedimento armazenado quando você chama ExecuteReader.The command executes this stored procedure when you call ExecuteReader.

Observação

Se uma transação for travada, uma exceção poderá não ser lançada até que Read seja chamado.If a transaction is deadlocked, an exception may not be thrown until Read is called.

O recurso MARS (vários conjuntos de resultados ativos) permite várias ações usando a mesma conexão.The multiple active result set (MARS) feature allows for multiple actions using the same connection.

Se você usar ExecuteReader ou BeginExecuteReader para acessar dados XML, SQL Server retornará quaisquer resultados XML com mais de 2.033 caracteres de comprimento em várias linhas de 2.033 caracteres cada.If you use ExecuteReader or BeginExecuteReader to access XML data, SQL Server will return any XML results greater than 2,033 characters in length in multiple rows of 2,033 characters each. Para evitar esse comportamento, use ExecuteXmlReader ou BeginExecuteXmlReader para ler consultas FOR XML.To avoid this behavior, use ExecuteXmlReader or BeginExecuteXmlReader to read FOR XML queries.

Veja também

ExecuteReader(CommandBehavior)

Envia o CommandText para o Connection e cria um SqlDataReader usando um dos valores de CommandBehavior.Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

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

Parâmetros

behavior
CommandBehavior

Um dos valores de CommandBehavior.One of the CommandBehavior values.

Retornos

SqlDataReader

Um objeto SqlDataReader .A SqlDataReader object.

Exceções

Um SqlDbType diferente de Binary ou VarBinary foi usado quando Value foi definido como Stream.A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

-ou--or-

Um SqlDbType diferente de Char, NChar, NVarChar, VarChar ou Xml foi usado quando Value foi definido como TextReader.A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

-ou--or-

Um SqlDbType diferente de Xml foi usado quando Value foi definido como XmlReader.A SqlDbType other than Xml was used when Value was set to XmlReader.

Ocorreu um tempo limite durante uma operação de streaming.A timeout occurred during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

Ocorreu um erro em um objeto Stream, XmlReader ou TextReader durante uma operação de streaming.An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

O SqlConnection foi fechado ou removido durante uma operação de streaming.The SqlConnection closed or dropped during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

O objeto Stream, XmlReader ou TextReader foi fechado durante uma operação de streaming.The Stream, XmlReader or TextReader object was closed during a streaming operation. Para saber mais sobre o streaming, consulte SqlClient Streaming Support (Suporte de streaming do SqlClient).For more information about streaming, see SqlClient Streaming Support.

Exemplos

O exemplo a seguir cria um SqlCommande, em seguida, executa-o passando uma cadeia de caracteres que é uma instrução SELECT do Transact-SQL e uma cadeia de caracteres a ser usada para se conectar à fonte de dados.The following example creates a SqlCommand, and then executes it by passing a string that is a Transact-SQL SELECT statement, and a string to use to connect to the data source. CommandBehavior está definido como CloseConnection.CommandBehavior is set to CloseConnection.

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]));
        }
    }
}
Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()
        Dim reader As SqlDataReader = _
            command.ExecuteReader(CommandBehavior.CloseConnection)
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

Comentários

Quando a propriedade CommandType é definida como StoredProcedure, a propriedade CommandText deve ser definida como o nome do procedimento armazenado.When the CommandType property is set to StoredProcedure, the CommandText property should be set to the name of the stored procedure. O comando executa esse procedimento armazenado quando você chama ExecuteReader.The command executes this stored procedure when you call ExecuteReader.

Observação

Use SequentialAccess para recuperar valores grandes e dados binários.Use SequentialAccess to retrieve large values and binary data. Caso contrário, um OutOfMemoryException poderá ocorrer e a conexão será fechada.Otherwise, an OutOfMemoryException might occur and the connection will be closed.

O recurso MARS (vários conjuntos de resultados ativos) permite várias ações usando a mesma conexão.The multiple active result set (MARS) feature allows for multiple actions using the same connection.

Se você usar ExecuteReader ou BeginExecuteReader para acessar dados XML, SQL Server retornará quaisquer resultados XML com mais de 2.033 caracteres de comprimento em várias linhas de 2.033 caracteres cada.If you use ExecuteReader or BeginExecuteReader to access XML data, SQL Server will return any XML results greater than 2,033 characters in length in multiple rows of 2,033 characters each. Para evitar esse comportamento, use ExecuteXmlReader ou BeginExecuteXmlReader para ler consultas FOR XML.To avoid this behavior, use ExecuteXmlReader or BeginExecuteXmlReader to read FOR XML queries.

Veja também

Aplica-se a