SqlDataReader Classe

Definição

Fornece uma maneira de ler um fluxo somente de encaminhamento de linhas com base em um banco de dados SQL Server.Provides a way of reading a forward-only stream of rows from a SQL Server database. Esta classe não pode ser herdada.This class cannot be inherited.

public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable, System::Data::Common::IDbColumnSchemaGenerator
public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable
public ref class SqlDataReader sealed : MarshalByRefObject, IDisposable, System::Collections::IEnumerable, System::Data::IDataReader
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable, System.Data.Common.IDbColumnSchemaGenerator
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
public sealed class SqlDataReader : MarshalByRefObject, IDisposable, System.Collections.IEnumerable, System.Data.IDataReader
type SqlDataReader = class
    inherit DbDataReader
    interface IDisposable
    interface IDbColumnSchemaGenerator
type SqlDataReader = class
    inherit DbDataReader
    interface IDisposable
type SqlDataReader = class
    inherit MarshalByRefObject
    interface IEnumerable
    interface IDataReader
    interface IDisposable
    interface IDataRecord
type SqlDataReader = class
    inherit DbDataReader
    interface IDataReader
    interface IDisposable
    interface IDataRecord
Public Class SqlDataReader
Inherits DbDataReader
Implements IDbColumnSchemaGenerator, IDisposable
Public Class SqlDataReader
Inherits DbDataReader
Implements IDisposable
Public NotInheritable Class SqlDataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IEnumerable
Herança
SqlDataReader
Herança
Herança
SqlDataReader
Implementações

Exemplos

O exemplo a seguir cria um SqlConnection, um SqlCommande um SqlDataReader.The following example creates a SqlConnection, a SqlCommand, and a SqlDataReader. O exemplo lê os dados, gravando-os na janela do console.The example reads through the data, writing it out to the console window. Em seguida, o código fecha o SqlDataReader.The code then closes the SqlDataReader. O SqlConnection é fechado automaticamente no final do bloco de código de using.The SqlConnection is closed automatically at the end of the using code block.

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

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadOrderData(str);
    }

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";

        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            // Call Read before accessing data.
            while (reader.Read())
            {
                ReadSingleRow((IDataRecord)reader);
            }

            // Call Close when done reading.
            reader.Close();
        }
    }

    private static void ReadSingleRow(IDataRecord record)
    {
        Console.WriteLine(String.Format("{0}, {1}", record[0], record[1]));
    }
}
Option Explicit On
Option Strict On

Imports System.Data
Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Dim str As String = "Data Source=(local);Initial Catalog=Northwind;" _
       & "Integrated Security=SSPI;"
        ReadOrderData(str)
    End Sub

    Private Sub ReadOrderData(ByVal connectionString As String)
        Dim queryString As String = _
            "SELECT OrderID, CustomerID FROM dbo.Orders;"

        Using connection As New SqlConnection(connectionString)
            Dim command As New SqlCommand(queryString, connection)
            connection.Open()

            Dim reader As SqlDataReader = command.ExecuteReader()

            ' Call Read before accessing data.
            While reader.Read()
                ReadSingleRow(CType(reader, IDataRecord))
            End While

            ' Call Close when done reading.
            reader.Close()
        End Using
    End Sub

    Private Sub ReadSingleRow(ByVal record As IDataRecord)
       Console.WriteLine(String.Format("{0}, {1}", record(0), record(1)))

    End Sub

End Module

Comentários

Para criar um SqlDataReader, você deve chamar o método ExecuteReader do objeto SqlCommand, em vez de usar um construtor diretamente.To create a SqlDataReader, you must call the ExecuteReader method of the SqlCommand object, instead of directly using a constructor.

Enquanto o SqlDataReader está sendo usado, o SqlConnection associado está ocupado servindo a SqlDataReader, e nenhuma outra operação pode ser executada no SqlConnection diferente de fechá-lo.While the SqlDataReader is being used, the associated SqlConnection is busy serving the SqlDataReader, and no other operations can be performed on the SqlConnection other than closing it. Esse é o caso até que o método de Close da SqlDataReader seja chamado.This is the case until the Close method of the SqlDataReader is called. Por exemplo, você não pode recuperar parâmetros de saída até depois de chamar Close.For example, you cannot retrieve output parameters until after you call Close.

As alterações feitas em um conjunto de resultados por outro processo ou thread enquanto dados estão sendo lidos podem ser visíveis para o usuário do SqlDataReader.Changes made to a result set by another process or thread while data is being read may be visible to the user of the SqlDataReader. No entanto, o comportamento preciso depende do tempo.However, the precise behavior is timing dependent.

IsClosed e RecordsAffected são as únicas propriedades que podem ser chamadas depois que o SqlDataReader for fechado.IsClosed and RecordsAffected are the only properties that you can call after the SqlDataReader is closed. Embora a propriedade RecordsAffected possa ser acessada enquanto o SqlDataReader existe, sempre chame Close antes de retornar o valor de RecordsAffected para garantir um valor de retorno preciso.Although the RecordsAffected property may be accessed while the SqlDataReader exists, always call Close before returning the value of RecordsAffected to guarantee an accurate return value.

Ao usar o acesso sequencial (CommandBehavior.SequentialAccess), um InvalidOperationException será gerado se a posição de SqlDataReader for avançada e outra operação de leitura for tentada na coluna anterior.When using sequential access (CommandBehavior.SequentialAccess), an InvalidOperationException will be raised if the SqlDataReader position is advanced and another read operation is attempted on the previous column.

Observação

Para um desempenho ideal, SqlDataReader evita a criação de objetos desnecessários ou a realização de cópias desnecessárias de dados.For optimal performance, SqlDataReader avoids creating unnecessary objects or making unnecessary copies of data. Portanto, várias chamadas para métodos como GetValue retornam uma referência ao mesmo objeto.Therefore, multiple calls to methods such as GetValue return a reference to the same object. Tome cuidado se você estiver modificando o valor subjacente dos objetos retornados por métodos como GetValue.Use caution if you are modifying the underlying value of the objects returned by methods such as GetValue.

Propriedades

Depth

Obtém um valor que indica a profundidade de aninhamento da linha atual.Gets a value that indicates the depth of nesting for the current row.

FieldCount

Obtém o número de colunas da linha atual.Gets the number of columns in the current row.

HasRows

Obtém um valor que indica se o SqlDataReader contém uma ou mais linhas.Gets a value that indicates whether the SqlDataReader contains one or more rows.

IsClosed

Recupera um valor Booliano que indica se a instância SqlDataReader especificada foi fechada.Retrieves a Boolean value that indicates whether the specified SqlDataReader instance has been closed.

Item[Int32]

Obtém o valor de uma coluna especificada em seu formato nativo, dado o ordinal da coluna.Gets the value of the specified column in its native format given the column ordinal.

Item[String]

Obtém o valor da coluna especificada em seu formato nativo, dado o nome da coluna.Gets the value of the specified column in its native format given the column name.

RecordsAffected

Obtém o número de linhas alteradas, inseridas ou excluídas pela execução da instrução Transact-SQL.Gets the number of rows changed, inserted, or deleted by execution of the Transact-SQL statement.

VisibleFieldCount

Obtém o número de campos em SqlDataReader que não estão ocultos.Gets the number of fields in the SqlDataReader that are not hidden.

Métodos

Close()

Fecha o objeto SqlDataReader.Closes the SqlDataReader object.

CloseAsync()

Fecha de maneira assíncrona o objeto DbDataReader.Asynchronously closes the DbDataReader object.

(Herdado de DbDataReader)
CreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Herdado de MarshalByRefObject)
Dispose()

Libera todos os recursos usados pela instância atual da classe DbDataReader.Releases all resources used by the current instance of the DbDataReader class.

(Herdado de DbDataReader)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo DbDataReader e opcionalmente libera os recursos gerenciados.Releases the unmanaged resources used by the DbDataReader and optionally releases the managed resources.

(Herdado de DbDataReader)
DisposeAsync()

Libera de forma assíncrona todos os recursos usados pela instância atual da classe DbDataReader.Asynchronously releases all resources used by the current instance of the DbDataReader class.

(Herdado de DbDataReader)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetBoolean(Int32)

Obtém o valor da coluna especificada como booliana.Gets the value of the specified column as a Boolean.

GetByte(Int32)

Obtém o valor da coluna especificada como um byte.Gets the value of the specified column as a byte.

GetBytes(Int32, Int64, Byte[], Int32, Int32)

Lê um fluxo de bytes do deslocamento de coluna especificado no buffer como uma matriz, que inicia no deslocamento de buffer fornecido.Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset.

GetChar(Int32)

Obtém o valor da coluna especificada como um único caractere.Gets the value of the specified column as a single character.

GetChars(Int32, Int64, Char[], Int32, Int32)

Lê um fluxo de caracteres do deslocamento de coluna especificado no buffer como uma matriz, que inicia no deslocamento de buffer fornecido.Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset.

GetColumnSchema()

Obtém a coleção do esquema da coluna somente leitura.Gets the read-only column schema collection.

GetData(Int32)

Retorna um IDataReader para o ordinal da coluna especificada.Returns an IDataReader for the specified column ordinal.

GetDataTypeName(Int32)

Obtém uma cadeia de caracteres que representa o tipo de dados da coluna especificada.Gets a string representing the data type of the specified column.

GetDateTime(Int32)

Obtém o valor da coluna especificada como um objeto DateTime.Gets the value of the specified column as a DateTime object.

GetDateTimeOffset(Int32)

Recupera o valor da coluna especificada como um objeto DateTimeOffset.Retrieves the value of the specified column as a DateTimeOffset object.

GetDbDataReader(Int32)

Retorna um objeto DbDataReader para o ordinal da coluna solicitado que pode ser substituído por uma implementação específica do provedor.Returns a DbDataReader object for the requested column ordinal that can be overridden with a provider-specific implementation.

(Herdado de DbDataReader)
GetDecimal(Int32)

Obtém o valor da coluna especificada como um objeto Decimal.Gets the value of the specified column as a Decimal object.

GetDouble(Int32)

Obtém o valor da coluna especificada como um número de ponto flutuante de precisão dupla.Gets the value of the specified column as a double-precision floating point number.

GetEnumerator()

Retorna um IEnumerator que itera pelo SqlDataReader.Returns an IEnumerator that iterates through the SqlDataReader.

GetFieldType(Int32)

Obtém o Type que é o tipo de dados do objeto.Gets the Type that is the data type of the object.

GetFieldValue<T>(Int32)

Obtém de forma síncrona o valor da coluna especificada como um tipo.Synchronously gets the value of the specified column as a type. GetFieldValueAsync<T>(Int32, CancellationToken) é a versão assíncrona deste método.GetFieldValueAsync<T>(Int32, CancellationToken) is the asynchronous version of this method.

GetFieldValueAsync<T>(Int32)

Obtém de forma assíncrona o valor da coluna especificada como um tipo solicitado.Asynchronously gets the value of the specified column as the requested type.

(Herdado de DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Obtém de forma assíncrona o valor da coluna especificada como um tipo.Asynchronously gets the value of the specified column as a type. GetFieldValue<T>(Int32) é a versão síncrona deste método.GetFieldValue<T>(Int32) is the synchronous version of this method.

GetFloat(Int32)

Obtém o valor da coluna especificada como um número de ponto flutuante de precisão simples.Gets the value of the specified column as a single-precision floating point number.

GetGuid(Int32)

Obtém o valor da coluna especificada como um GUID (identificador global exclusivo).Gets the value of the specified column as a globally unique identifier (GUID).

GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetInt16(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 16 bits.Gets the value of the specified column as a 16-bit signed integer.

GetInt32(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 32 bits.Gets the value of the specified column as a 32-bit signed integer.

GetInt64(Int32)

Obtém o valor da coluna especificada como um inteiro assinado de 64 bits.Gets the value of the specified column as a 64-bit signed integer.

GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Herdado de MarshalByRefObject)
GetName(Int32)

Obtém o nome da coluna especificada.Gets the name of the specified column.

GetOrdinal(String)

Obtém o ordinal da coluna, dado o nome da coluna.Gets the column ordinal, given the name of the column.

GetProviderSpecificFieldType(Int32)

Obtém um Object que é uma representação do tipo de campo específico do provedor subjacente.Gets an Object that is a representation of the underlying provider-specific field type.

GetProviderSpecificValue(Int32)

Obtém um Object que é uma representação do valor específico do provedor subjacente.Gets an Object that is a representation of the underlying provider specific value.

GetProviderSpecificValues(Object[])

Obtém uma matriz de objetos que são uma representação dos valores específicos do provedor subjacente.Gets an array of objects that are a representation of the underlying provider specific values.

GetSchemaTable()

Retorna uma DataTable que descreve os metadados da coluna do SqlDataReader.Returns a DataTable that describes the column metadata of the SqlDataReader.

GetSqlBinary(Int32)

Obtém o valor da coluna especificada como um SqlBinary.Gets the value of the specified column as a SqlBinary.

GetSqlBoolean(Int32)

Obtém o valor da coluna especificada como um SqlBoolean.Gets the value of the specified column as a SqlBoolean.

GetSqlByte(Int32)

Obtém o valor da coluna especificada como um SqlByte.Gets the value of the specified column as a SqlByte.

GetSqlBytes(Int32)

Obtém o valor da coluna especificada como SqlBytes.Gets the value of the specified column as SqlBytes.

GetSqlChars(Int32)

Obtém o valor da coluna especificada como SqlChars.Gets the value of the specified column as SqlChars.

GetSqlDateTime(Int32)

Obtém o valor da coluna especificada como um SqlDateTime.Gets the value of the specified column as a SqlDateTime.

GetSqlDecimal(Int32)

Obtém o valor da coluna especificada como um SqlDecimal.Gets the value of the specified column as a SqlDecimal.

GetSqlDouble(Int32)

Obtém o valor da coluna especificada como um SqlDouble.Gets the value of the specified column as a SqlDouble.

GetSqlGuid(Int32)

Obtém o valor da coluna especificada como um SqlGuid.Gets the value of the specified column as a SqlGuid.

GetSqlInt16(Int32)

Obtém o valor da coluna especificada como um SqlInt16.Gets the value of the specified column as a SqlInt16.

GetSqlInt32(Int32)

Obtém o valor da coluna especificada como um SqlInt32.Gets the value of the specified column as a SqlInt32.

GetSqlInt64(Int32)

Obtém o valor da coluna especificada como um SqlInt64.Gets the value of the specified column as a SqlInt64.

GetSqlMoney(Int32)

Obtém o valor da coluna especificada como um SqlMoney.Gets the value of the specified column as a SqlMoney.

GetSqlSingle(Int32)

Obtém o valor da coluna especificada como um SqlSingle.Gets the value of the specified column as a SqlSingle.

GetSqlString(Int32)

Obtém o valor da coluna especificada como um SqlString.Gets the value of the specified column as a SqlString.

GetSqlValue(Int32)

Retorna o valor dos dados na coluna especificada como um tipo SQL Server.Returns the data value in the specified column as a SQL Server type.

GetSqlValues(Object[])

Preenche uma matriz de Object que contém os valores de todas as colunas no registro, expressos como tipos do SQL Server.Fills an array of Object that contains the values for all the columns in the record, expressed as SQL Server types.

GetSqlXml(Int32)

Obtém o valor da coluna especificada como um valor XML.Gets the value of the specified column as an XML value.

GetStream(Int32)

Recupera binário, imagem, varbinary, UDT e tipos de dados Variant como um Stream.Retrieves binary, image, varbinary, UDT, and variant data types as a Stream.

GetString(Int32)

Obtém o valor da coluna especificada como uma cadeia de caracteres.Gets the value of the specified column as a string.

GetTextReader(Int32)

Recupera os tipos de dados Char, NChar, NText, NVarChar, texto, varChar e Variant como um TextReader.Retrieves Char, NChar, NText, NVarChar, text, varChar, and Variant data types as a TextReader.

GetTimeSpan(Int32)

Recupera o valor da coluna especificada como um objeto TimeSpan.Retrieves the value of the specified column as a TimeSpan object.

GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
GetValue(Int32)

Obtém o valor da coluna especificada em seu formato nativo.Gets the value of the specified column in its native format.

GetValues(Object[])

Popula uma matriz de objetos com os valores da coluna da linha atual.Populates an array of objects with the column values of the current row.

GetXmlReader(Int32)

Recupera dados do tipo XML como um XmlReader.Retrieves data of type XML as an XmlReader.

InitializeLifetimeService()

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.Obtains a lifetime service object to control the lifetime policy for this instance.

(Herdado de MarshalByRefObject)
IsDBNull(Int32)

Obtém um valor que indica se a coluna contém valores ausentes ou inexistente.Gets a value that indicates whether the column contains non-existent or missing values.

IsDBNullAsync(Int32)

Obtém, de maneira assíncrona, um valor que indica se a coluna contém valores ausentes ou inexistente.Asynchronously gets a value that indicates whether the column contains non-existent or missing values.

(Herdado de DbDataReader)
IsDBNullAsync(Int32, CancellationToken)

Uma versão assíncrona de IsDBNull(Int32), que obtém um valor que indica se a coluna contém valores ausentes ou inexistente.An asynchronous version of IsDBNull(Int32), which gets a value that indicates whether the column contains non-existent or missing values.

O token de cancelamento pode ser usado para solicitar que a operação seja abandonada antes de expirar o tempo limite do comando.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. As exceções serão relatadas por meio do objeto de tarefa.Exceptions will be reported via the returned Task object.

MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.Creates a shallow copy of the current MarshalByRefObject object.

(Herdado de MarshalByRefObject)
NextResult()

Leva o leitor de dados ao resultado seguinte ao ler os resultados de instruções Transact-SQL em lote.Advances the data reader to the next result, when reading the results of batch Transact-SQL statements.

NextResultAsync()

Avança de maneira assíncrona o leitor para o resultado seguinte ao ler os resultados de um lote de instruções.Asynchronously advances the reader to the next result when reading the results of a batch of statements.

(Herdado de DbDataReader)
NextResultAsync(CancellationToken)

Uma versão assíncrona de NextResult(), que avança o leitor de dados para o resultado seguinte ao ler os resultados de um lote de instruções Transact-SQLTransact-SQL.An asynchronous version of NextResult(), which advances the data reader to the next result, when reading the results of batch Transact-SQLTransact-SQL statements.

O token de cancelamento pode ser usado para solicitar que a operação seja abandonada antes de expirar o tempo limite do comando.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. As exceções serão relatadas por meio do objeto de tarefa.Exceptions will be reported via the returned Task object.

Read()

Avança o SqlDataReader para o próximo registro.Advances the SqlDataReader to the next record.

ReadAsync()

Avança de maneira assíncrona o leitor para o próximo registro em um conjunto de resultados.Asynchronously advances the reader to the next record in a result set.

(Herdado de DbDataReader)
ReadAsync(CancellationToken)

Uma versão assíncrona de Read(), que avança o SqlDataReader para o próximo registro.An asynchronous version of Read(), which advances the SqlDataReader to the next record.

O token de cancelamento pode ser usado para solicitar que a operação seja abandonada antes de expirar o tempo limite do comando.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. As exceções serão relatadas por meio do objeto de tarefa.Exceptions will be reported via the returned Task object.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Implantações explícitas de interface

IDataReader.Close()

Para obter uma descrição desse membro, confira Close().For a description of this member, see Close().

(Herdado de DbDataReader)
IDataReader.GetSchemaTable()

Para obter uma descrição desse membro, confira GetSchemaTable().For a description of this member, see GetSchemaTable().

(Herdado de DbDataReader)
IDataRecord.GetData(Int32)

Retorna um IDataReader para o ordinal da coluna especificada.Returns an IDataReader for the specified column ordinal.

IDisposable.Dispose()

Libera todos os recursos usados pelo leitor de dados.Releases all resources that are used by the data reader.

IEnumerable.GetEnumerator()

Retorna um enumerador que pode ser usado para iterar na coleção de item.Returns an enumerator that can be used to iterate through the item collection.

Métodos de Extensão

CanGetColumnSchema(DbDataReader)

Obtém um valor que indica se um DbDataReader pode obter um esquema de coluna.Gets a value that indicates whether a DbDataReader can get a column schema.

GetColumnSchema(DbDataReader)

Obtém o esquema da coluna (coleção DbColumn) para um DbDataReader.Gets the column schema (DbColumn collection) for a DbDataReader.

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.Enables parallelization of a query.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.Converts an IEnumerable to an IQueryable.

Aplica-se a

Veja também