SqlDataReader Classe

Definizione

Consente di leggere un flusso forward-only di righe da un database SQL Server. La classe non può essere ereditata.

public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable
public ref class SqlDataReader sealed : MarshalByRefObject, IDisposable, System::Collections::IEnumerable, System::Data::IDataReader
public ref class SqlDataReader : System::Data::Common::DbDataReader, System::Data::Common::IDbColumnSchemaGenerator
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
public sealed class SqlDataReader : MarshalByRefObject, IDisposable, System.Collections.IEnumerable, System.Data.IDataReader
public class SqlDataReader : System.Data.Common.DbDataReader, System.Data.Common.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
type SqlDataReader = class
    inherit DbDataReader
    interface IDataReader
    interface IDataRecord
    interface IDisposable
    interface IDbColumnSchemaGenerator
Public Class SqlDataReader
Inherits DbDataReader
Implements IDisposable
Public NotInheritable Class SqlDataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IEnumerable
Public Class SqlDataReader
Inherits DbDataReader
Implements IDbColumnSchemaGenerator
Ereditarietà
SqlDataReader
Ereditarietà
Ereditarietà
SqlDataReader
Implementazioni

Esempio

Nell'esempio seguente viene creato un SqlConnectionoggetto , un SqlCommandoggetto e un oggetto SqlDataReader. L'esempio legge i dati, scrivendoli nella finestra della console. Il codice chiude quindi .SqlDataReader L'oggetto SqlConnection viene chiuso automaticamente alla fine del blocco di using codice.

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 dataRecord)
    {
        Console.WriteLine(String.Format("{0}, {1}", dataRecord[0], dataRecord[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

Commenti

Per creare un SqlDataReaderoggetto , è necessario chiamare il ExecuteReader metodo dell'oggetto SqlCommand anziché usare direttamente un costruttore.

Durante l'utilizzo SqlDataReader di , l'oggetto associato SqlConnection è occupato a gestire SqlDataReadere non è possibile eseguire altre operazioni sull'oggetto SqlConnection diverso da chiuderlo. Questo è il caso fino a quando non viene chiamato il Close metodo dell'oggetto SqlDataReader . Ad esempio, non è possibile recuperare i parametri di output fino a quando non si chiama Close.

Le modifiche apportate a un set di risultati da un altro processo o thread durante la lettura dei dati possono essere visibili all'utente dell'oggetto SqlDataReader. Tuttavia, il comportamento preciso dipende dal tempo.

IsClosed e RecordsAffected sono le uniche proprietà che possono essere chiamate dopo la chiusura dell'oggetto SqlDataReader. Anche se è possibile accedere alla RecordsAffected proprietà mentre SqlDataReader esiste, chiamare Close sempre prima di restituire il valore di RecordsAffected per garantire un valore restituito accurato.

Quando si usa l'accesso sequenziale (CommandBehavior.SequentialAccess), verrà generato un oggetto InvalidOperationException se la SqlDataReader posizione è avanzata e viene tentata un'altra operazione di lettura sulla colonna precedente.

Nota

Per ottenere prestazioni ottimali, SqlDataReader evita di creare oggetti non necessari o di creare copie non necessarie dei dati. Pertanto, più chiamate a metodi, ad GetValue esempio restituiscono un riferimento allo stesso oggetto. Prestare attenzione se si modifica il valore sottostante degli oggetti restituiti da metodi come GetValue.

Proprietà

Connection

Ottiene l'oggetto SqlConnection associato all'oggetto SqlDataReader.

Depth

Ottiene un valore che indica la profondità dell'annidamento per la riga corrente.

FieldCount

Ottiene il numero di colonne nella riga corrente.

HasRows

Ottiene un valore che indica se la classe SqlDataReader contiene una o più righe.

IsClosed

Recupera un valore Boolean che indica se l'istanza SqlDataReader specificata è stata chiusa.

Item[Int32]

Ottiene il valore della colonna specificata nel formato nativo, data la posizione ordinale della colonna.

Item[String]

Ottiene il valore della colonna specificata nel formato nativo, dato il nome della colonna.

RecordsAffected

Ottiene il numero di righe modificate, inserite o eliminate dall'esecuzione dell'istruzione Transact-SQL.

VisibleFieldCount

Ottiene il numero di campi non nascosti in SqlDataReader.

Metodi

Close()

Chiude l'oggetto SqlDataReader.

Close()

Chiude l'oggetto DbDataReader.

(Ereditato da DbDataReader)
CloseAsync()

Chiude in modo asincrono l'oggetto DbDataReader.

(Ereditato da DbDataReader)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della classe DbDataReader.

(Ereditato da DbDataReader)
Dispose(Boolean)

Consente di leggere un flusso forward-only di righe da un database SQL Server. La classe non può essere ereditata.

Dispose(Boolean)

Rilascia le risorse non gestite usate da DbDataReader e, facoltativamente, le risorse gestite.

(Ereditato da DbDataReader)
DisposeAsync()

Rilascia in modo asincrono le risorse usate dall'istanza corrente della classe DbDataReader.

(Ereditato da DbDataReader)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBoolean(Int32)

Ottiene il valore della colonna specificata come valore Boolean.

GetByte(Int32)

Ottiene il valore della colonna specificata come byte.

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

Legge un flusso di byte dall'offset di colonna specificato nel buffer sotto forma di matrice, a partire dall'offset di buffer specificato.

GetChar(Int32)

Ottiene il valore della colonna specificata come carattere singolo.

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

Legge un flusso di caratteri dall'offset di colonna specificato nel buffer sotto forma di matrice, a partire dall'offset di buffer specificato.

GetColumnSchema()

Ottiene la raccolta di schemi di colonna di sola lettura.

GetColumnSchemaAsync(CancellationToken)

Si tratta della versione asincrona di GetColumnSchema(DbDataReader). I provider devono eseguire l'override con un'implementazione appropriata. cancellationToken può facoltativamente essere rispettato. L'implementazione predefinita richiama la chiamata sincrona GetColumnSchema(DbDataReader) e restituisce un'attività completata. L'implementazione predefinita restituirà un'attività annullata se viene passato un cancellationToken già annullato. Le eccezioni generate da GetColumnSchema(DbDataReader) verranno passate mediante la proprietà Task Exception restituita.

(Ereditato da DbDataReader)
GetData(Int32)

Restituisce IDataReader per l'ordinale di colonna specificato.

GetData(Int32)

Restituisce un lettore di dati annidati per la colonna richiesta.

(Ereditato da DbDataReader)
GetDataTypeName(Int32)

Ottiene una stringa che rappresenta il tipo di dati della colonna specificata.

GetDateTime(Int32)

Ottiene il valore della colonna specificata come oggetto DateTime.

GetDateTimeOffset(Int32)

Recupera il valore della colonna specificata sotto forma di oggetto DateTimeOffset.

GetDbDataReader(Int32)

Restituisce un oggetto DbDataReader per l'ordinale di colonna richiesto, di cui è possibile eseguire l'override tramite un'implementazione specifica del provider.

(Ereditato da DbDataReader)
GetDecimal(Int32)

Ottiene il valore della colonna specificata come oggetto Decimal.

GetDouble(Int32)

Ottiene il valore della colonna specificata come numero a virgola mobile a precisione doppia.

GetEnumerator()

Restituisce un oggetto IEnumerator che esegue l'iterazione di SqlDataReader.

GetFieldType(Int32)

Ottiene l'oggetto Type che rappresenta il tipo di dati dell'oggetto.

GetFieldValue<T>(Int32)

Ottiene in modo sincrono il valore della colonna specificata sotto forma di tipo. GetFieldValueAsync<T>(Int32, CancellationToken) è la versione asincrona di questo metodo.

GetFieldValue<T>(Int32)

Ottiene il valore della colonna specificata come tipo richiesto.

(Ereditato da DbDataReader)
GetFieldValueAsync<T>(Int32)

Ottiene in modo asincrono il valore della colonna specificata come tipo richiesto.

(Ereditato da DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Ottiene in modo sincrono il valore della colonna specificata come tipo. GetFieldValue<T>(Int32) è la versione sincrona di questo metodo.

GetFieldValueAsync<T>(Int32, CancellationToken)

Ottiene in modo asincrono il valore della colonna specificata come tipo richiesto.

(Ereditato da DbDataReader)
GetFloat(Int32)

Ottiene il valore della colonna specificata come numero a virgola mobile con precisione singola.

GetGuid(Int32)

Ottiene il valore della colonna specificata come identificatore univoco globale (GUID).

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetInt16(Int32)

Ottiene il valore della colonna specificata sotto forma di intero con segno a 16 bit.

GetInt32(Int32)

Ottiene il valore della colonna specificata come intero con segno a 32 bit.

GetInt64(Int32)

Ottiene il valore della colonna specificata come integer con segno a 64 bit.

GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetName(Int32)

Ottiene il nome della colonna specificata.

GetOrdinal(String)

Ottiene la posizione ordinale della colonna, dato il nome della colonna.

GetProviderSpecificFieldType(Int32)

Ottiene un oggetto Object che consiste in una rappresentazione del tipo di campo specifico del provider sottostante.

GetProviderSpecificValue(Int32)

Ottiene un oggetto Object che consiste in una rappresentazione del valore specifico del provider sottostante.

GetProviderSpecificValues(Object[])

Ottiene una matrice di oggetti che sono una rappresentazione dei valori specifici del provider sottostante.

GetSchemaTable()

Restituisce un oggetto DataTable che descrive i metadati della colonna di SqlDataReader.

GetSchemaTable()

Restituisce un oggetto DataTable che descrive i metadati della colonna di DbDataReader. Restituisce null se il comando eseguito non ha restituito alcun set di risultati o dopo NextResult() restituisce false.

(Ereditato da DbDataReader)
GetSchemaTableAsync(CancellationToken)

Si tratta della versione asincrona di GetSchemaTable(). I provider devono eseguire l'override con un'implementazione appropriata. cancellationToken può facoltativamente essere rispettato. L'implementazione predefinita richiama la chiamata sincrona GetSchemaTable() e restituisce un'attività completata. L'implementazione predefinita restituirà un'attività annullata se viene passato un cancellationToken già annullato. Le eccezioni generate da GetSchemaTable() verranno passate mediante la proprietà Task Exception restituita.

(Ereditato da DbDataReader)
GetSqlBinary(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlBinary.

GetSqlBoolean(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlBoolean.

GetSqlByte(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlByte.

GetSqlBytes(Int32)

Ottiene il valore della colonna specificata sotto forma di un oggetto SqlBytes.

GetSqlChars(Int32)

Ottiene il valore della colonna specificata sotto forma di un oggetto SqlChars.

GetSqlDateTime(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlDateTime.

GetSqlDecimal(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlDecimal.

GetSqlDouble(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlDouble.

GetSqlGuid(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlGuid.

GetSqlInt16(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlInt16.

GetSqlInt32(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlInt32.

GetSqlInt64(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlInt64.

GetSqlMoney(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlMoney.

GetSqlSingle(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlSingle.

GetSqlString(Int32)

Ottiene il valore della colonna specificata sotto forma di classe SqlString.

GetSqlValue(Int32)

Restituisce il valore dei dati della colonna specificata come tipo SQL Server.

GetSqlValues(Object[])

Riempie una matrice di oggetti Object che contiene i valori relativi a tutte le colonne del record, espressi come tipi SQL Server.

GetSqlXml(Int32)

Ottiene il valore della colonna specificata come valore XML.

GetStream(Int32)

Recupera i tipi di dati binary, image, varbinary, UDT e variant come Stream.

GetStream(Int32)

Ottiene un flusso per recuperare i dati dalla colonna specificata.

(Ereditato da DbDataReader)
GetString(Int32)

Ottiene il valore della colonna specificata sotto forma di stringa.

GetTextReader(Int32)

Recupera i tipi di dati Char, NChar, NText, NVarChar, text, varChar e Variant come TextReader.

GetTextReader(Int32)

Ottiene un lettore di testo per recuperare i dati dalla colonna.

(Ereditato da DbDataReader)
GetTimeSpan(Int32)

Recupera il valore della colonna specificata sotto forma di oggetto TimeSpan.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetValue(Int32)

Ottiene il valore della colonna specificata nel formato nativo.

GetValues(Object[])

Popola una matrice di oggetti con i valori della colonna della riga corrente.

GetXmlReader(Int32)

Recupera i dati di tipo XML come XmlReader.

InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
IsCommandBehavior(CommandBehavior)

Determina se l'oggetto CommandBehavior specificato corrisponde a SqlDataReader.

IsDBNull(Int32)

Ottiene un valore che indica se la colonna contiene valori non esistenti o mancanti.

IsDBNullAsync(Int32)

Ottiene un valore in modo asincrono, che indica se la colonna contiene valori non esistenti o mancanti.

(Ereditato da DbDataReader)
IsDBNullAsync(Int32, CancellationToken)

Versione asincrona di IsDBNull(Int32) che ottiene un valore che indica se la colonna contiene valori non esistenti o mancanti.

Il token di annullamento può essere utilizzato per richiedere che l'operazione venga abbandonata prima del timeout del comando. Le eccezioni verranno segnalate tramite l'oggetto attività restituito.

IsDBNullAsync(Int32, CancellationToken)

Ottiene un valore in modo asincrono, che indica se la colonna contiene valori non esistenti o mancanti.

(Ereditato da DbDataReader)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
NextResult()

Sposta il visualizzatore di dati al risultato successivo, durante la lettura dei risultati delle istruzioni Transact-SQL batch.

NextResultAsync()

Sposta in modo asincrono il lettore al risultato successivo durante la lettura dei risultati di un batch di istruzioni.

(Ereditato da DbDataReader)
NextResultAsync(CancellationToken)

Versione asincrona di NextResult(), che sposta il lettore dati al risultato successivo, durante la lettura dei risultati delle istruzioni Transact-SQL batch.

Il token di annullamento può essere utilizzato per richiedere che l'operazione venga abbandonata prima del timeout del comando. Le eccezioni verranno segnalate tramite l'oggetto attività restituito.

NextResultAsync(CancellationToken)

Sposta in modo asincrono il lettore al risultato successivo durante la lettura dei risultati di un batch di istruzioni.

(Ereditato da DbDataReader)
Read()

Sposta l'oggetto SqlDataReader al record successivo.

ReadAsync()

Sposta in modo asincrono il lettore al record successivo in un set di risultati.

(Ereditato da DbDataReader)
ReadAsync(CancellationToken)

Versione asincrona di Read(), che avanza il SqlDataReader al record successivo.

Il token di annullamento può essere utilizzato per richiedere che l'operazione venga abbandonata prima del timeout del comando. Le eccezioni verranno segnalate tramite l'oggetto attività restituito.

ReadAsync(CancellationToken)

Sposta in modo asincrono il lettore al record successivo in un set di risultati.

(Ereditato da DbDataReader)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDataReader.Close()

Per una descrizione di questo membro, vedere Close().

(Ereditato da DbDataReader)
IDataReader.GetSchemaTable()

Per una descrizione di questo membro, vedere GetSchemaTable().

(Ereditato da DbDataReader)
IDataRecord.GetData(Int32)

Restituisce IDataReader per l'ordinale di colonna specificato.

IDataRecord.GetData(Int32)

Per una descrizione di questo membro, vedere GetData(Int32).

(Ereditato da DbDataReader)
IDisposable.Dispose()

Rilascia tutte le risorse utilizzate dal lettore dati.

IEnumerable.GetEnumerator()

Restituisce un enumeratore che può essere utilizzato per scorrere l'insieme di elementi.

Metodi di estensione

CanGetColumnSchema(DbDataReader)

Ottiene un valore che indica se un oggetto DbDataReader può ottenere uno schema di colonna.

GetColumnSchema(DbDataReader)

Ottiene lo schema di colonne (raccolta DbColumn) per un oggetto DbDataReader.

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

Si applica a

Vedi anche