Partilhar via


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. Essa classe não pode ser herdada.

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

Exemplos

O exemplo a seguir cria um SqlConnection, um SqlCommande um SqlDataReader. O exemplo lê os dados, gravando-os na janela do console. Em seguida, o código fecha o SqlDataReader. O SqlConnection é fechado automaticamente no final do using bloco de código.

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

}

Comentários

Para criar um SqlDataReader, você deve chamar o ExecuteReader método do SqlCommand objeto, em vez de usar diretamente um construtor.

Enquanto o SqlDataReader está sendo usado, o associado SqlConnection está ocupado atendendo ao SqlDataReadere nenhuma outra operação pode ser executada no outro que não seja SqlConnection fechá-lo. Esse é o caso até que o Close método do SqlDataReader seja chamado. Por exemplo, você não pode recuperar parâmetros de saída até depois de chamar 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. No entanto, o comportamento preciso depende do tempo.

IsClosed e RecordsAffected são as únicas propriedades que podem ser chamadas depois que o SqlDataReader for fechado. Embora a RecordsAffected propriedade possa ser acessada enquanto o SqlDataReader existe, sempre chame Close antes de retornar o valor de RecordsAffected para garantir um valor retornado preciso.

Ao usar o acesso sequencial (CommandBehavior.SequentialAccess), um InvalidOperationException será gerado se a SqlDataReader posição for avançada e outra operação de leitura for tentada na coluna anterior.

Observação

Para obter um desempenho ideal, SqlDataReader evita a criação de objetos desnecessários ou a criação de cópias desnecessárias de dados. Portanto, várias chamadas para métodos como GetValue retornam uma referência ao mesmo objeto. Tenha cuidado se você estiver modificando o valor subjacente dos objetos retornados por métodos como GetValue.

Propriedades

Connection

Obtém o SqlConnection associado ao SqlDataReader.

Depth

Obtém um valor que indica a profundidade de aninhamento da linha atual.

FieldCount

Obtém o número de colunas na linha atual.

HasRows

Obtém um valor que indica se o SqlDataReader contém uma ou mais linhas.

IsClosed

Recupera um valor Booliano que indica se a instância SqlDataReader especificada foi fechada.

Item[Int32]

Obtém o valor da coluna especificada em seu formato nativo de acordo com o ordinal da coluna.

Item[String]

Obtém o valor da coluna especificada em seu formato nativo de acordo com o nome da coluna.

RecordsAffected

Obtém o número de linhas alteradas, inseridas ou excluídas pela execução da instrução Transact-SQL.

SensitivityClassification

Obtém as SensitivityClassification informações com o SqlDataReader.

VisibleFieldCount

Obtém o número de campos em SqlDataReader que não estão ocultos.

Métodos

Close()

Fecha o objeto SqlDataReader.

Dispose(Boolean)

Fornece uma maneira de ler um fluxo somente de encaminhamento de linhas com base em um banco de dados SQL Server. Essa classe não pode ser herdada.

GetBoolean(Int32)

Obtém o valor da coluna especificada como um booliano.

GetByte(Int32)

Obtém o valor da coluna especificada como um 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.

GetChar(Int32)

Obtém o valor da coluna especificada como um único caractere.

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.

GetColumnSchema()

Obtém a coleção do esquema da coluna somente leitura.

GetDataTypeName(Int32)

Obtém uma cadeia de caracteres que representa o tipo de dados da coluna especificada.

GetDateTime(Int32)

Obtém o valor da coluna especificada como um objeto DateTime.

GetDateTimeOffset(Int32)

Recupera o valor da coluna especificada como um objeto DateTimeOffset.

GetDecimal(Int32)

Obtém o valor da coluna especificada como um objeto Decimal.

GetDouble(Int32)

Obtém o valor da coluna especificada como um número de ponto flutuante de precisão dupla.

GetEnumerator()

Retorna um IEnumerator que itera pelo SqlDataReader.

GetFieldType(Int32)

Obtém o Type que é o tipo de dados do objeto.

GetFieldValue<T>(Int32)

Obtém de forma síncrona o valor da coluna especificada como um tipo. GetFieldValueAsync<T>(Int32, CancellationToken) é a versão assíncrona deste método.

GetFieldValueAsync<T>(Int32, CancellationToken)

Obtém de forma assíncrona o valor da coluna especificada como um tipo. GetFieldValue<T>(Int32) é a versão síncrona deste método.

GetFloat(Int32)

Obtém o valor da coluna especificada como um número de ponto flutuante de precisão simples.

GetGuid(Int32)

Obtém o valor da coluna especificada como um GUID (identificador global exclusivo).

GetInt16(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 16 bits.

GetInt32(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 32 bits.

GetInt64(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 64 bits.

GetName(Int32)

Obtém o nome da coluna especificada.

GetOrdinal(String)

Obtém a ordinal da coluna, de acordo com o nome da coluna.

GetProviderSpecificFieldType(Int32)

Obtém um Object que é uma representação do tipo de campo específico do provedor subjacente.

GetProviderSpecificValue(Int32)

Obtém um Object que é uma representação do valor específico do provedor subjacente.

GetProviderSpecificValues(Object[])

Obtém uma matriz de objetos que são uma representação dos valores específicos do provedor subjacente.

GetSchemaTable()

Retorna um DataTable que descreve os metadados da coluna do SqlDataReader.

GetSqlBinary(Int32)

Obtém o valor da coluna especificada como um SqlBinary.

GetSqlBoolean(Int32)

Obtém o valor da coluna especificada como um SqlBoolean.

GetSqlByte(Int32)

Obtém o valor da coluna especificada como um SqlByte.

GetSqlBytes(Int32)

Obtém o valor da coluna especificada como SqlBytes.

GetSqlChars(Int32)

Obtém o valor da coluna especificada como SqlChars.

GetSqlDateTime(Int32)

Obtém o valor da coluna especificada como um SqlDateTime.

GetSqlDecimal(Int32)

Obtém o valor da coluna especificada como um SqlDecimal.

GetSqlDouble(Int32)

Obtém o valor da coluna especificada como um SqlDouble.

GetSqlGuid(Int32)

Obtém o valor da coluna especificada como um SqlGuid.

GetSqlInt16(Int32)

Obtém o valor da coluna especificada como um SqlInt16.

GetSqlInt32(Int32)

Obtém o valor da coluna especificada como um SqlInt32.

GetSqlInt64(Int32)

Obtém o valor da coluna especificada como um SqlInt64.

GetSqlMoney(Int32)

Obtém o valor da coluna especificada como um SqlMoney.

GetSqlSingle(Int32)

Obtém o valor da coluna especificada como um SqlSingle.

GetSqlString(Int32)

Obtém o valor da coluna especificada como um SqlString.

GetSqlValue(Int32)

Retorna o valor dos dados na coluna especificada como um tipo SQL Server.

GetSqlValues(Object[])

Preenche uma matriz de Object que contém os valores de todas as colunas no registro, expressos como tipos do SQL Server.

GetSqlXml(Int32)

Obtém o valor da coluna especificada como um valor XML.

GetStream(Int32)

Recupera binário, imagem, varbinary, UDT e tipos de dados Variant como um Stream.

GetString(Int32)

Obtém o valor da coluna especificada como uma cadeia de caracteres.

GetTextReader(Int32)

Recupera os tipos de dados Char, NChar, NText, NVarChar, texto, varChar e Variant como um TextReader.

GetTimeSpan(Int32)

Recupera o valor da coluna especificada como um objeto TimeSpan.

GetValue(Int32)

Obtém o valor da coluna especificada em seu formato nativo.

GetValues(Object[])

Popula uma matriz de objetos com os valores da coluna da linha atual.

GetXmlReader(Int32)

Recupera dados do tipo XML como um XmlReader.

IsCommandBehavior(CommandBehavior)

Determina se o CommandBehavior especificado corresponde ao do SqlDataReader.

IsDBNull(Int32)

Obtém um valor que indica se a coluna contém valores ausentes ou inexistente.

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.

O token de cancelamento pode ser usado para solicitar que a operação seja abandonada antes de expirar o tempo limite do comando. As exceções serão relatadas por meio do objeto de tarefa.

NextResult()

Leva o leitor de dados ao resultado seguinte ao ler os resultados de instruções Transact-SQL em lote.

NextResultAsync(CancellationToken)

Uma versão assíncrona do , que avança o leitor de NextResult()dados para o próximo resultado, ao ler os resultados das instruções Transact-SQL em lote.

O token de cancelamento pode ser usado para solicitar que a operação seja abandonada antes de expirar o tempo limite do comando. As exceções serão relatadas por meio do objeto de tarefa.

Read()

Avança o SqlDataReader para o próximo registro.

ReadAsync(CancellationToken)

Uma versão assíncrona de Read(), que avança o SqlDataReader para o próximo registro.

O token de cancelamento pode ser usado para solicitar que a operação seja abandonada antes de expirar o tempo limite do comando. As exceções serão relatadas por meio do objeto de tarefa.

Implantações explícitas de interface

IDataRecord.GetData(Int32)

Retorna um IDataReader para o ordinal da coluna especificada.

Aplica-se a