Condividi tramite


SqlDataReader Classe

Definizione

Consente di leggere un flusso forward-only di righe da un database di SQL Server. Questa 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 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
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 IDisposable
Public NotInheritable Class SqlDataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IEnumerable
Ereditarietà
SqlDataReader
Ereditarietà
Ereditarietà
SqlDataReader
Implementazioni

Esempio

Nell'esempio seguente viene creato un oggetto SqlConnection, 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.

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

Commenti

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

SqlDataReader Mentre è in uso, l'oggetto associato SqlConnection è occupato a servire e SqlDataReadernon è 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 mentre i dati vengono letti possono essere visibili all'utente di SqlDataReader. Tuttavia, il comportamento preciso dipende dalla tempistica.

IsClosed e RecordsAffected sono le uniche proprietà che è possibile chiamare dopo la chiusura di SqlDataReader . Anche se la RecordsAffected proprietà può essere accessibile 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.

Annotazioni

Per ottenere prestazioni ottimali, SqlDataReader evitare 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à

Nome Descrizione
Connection

Ottiene l'oggetto SqlConnection associato all'oggetto SqlDataReader.

Depth

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

FieldCount

Ottiene il numero di colonne nella riga corrente.

HasRows

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

IsClosed

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

Item[Int32]

Ottiene il valore della colonna specificata nel formato nativo in base all'ordinale di colonna.

Item[String]

Ottiene il valore della colonna specificata nel formato nativo in base al 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 nell'oggetto SqlDataReader che non sono nascosti.

Metodi

Nome Descrizione
Close()

Chiude l'oggetto SqlDataReader .

CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

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

(Ereditato da DbDataReader)
Dispose(Boolean)

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

(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 booleano.

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 di una matrice a partire dall'offset del buffer specificato.

GetChar(Int32)

Ottiene il valore della colonna specificata come singolo carattere.

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

Legge un flusso di caratteri dall'offset di colonna specificato nel buffer come matrice a partire dall'offset del buffer specificato.

GetData(Int32)

Restituisce un oggetto IDataReader per l'ordinale di colonna specificato.

GetData(Int32)

Restituisce un lettore di dati annidato 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 DateTime oggetto .

GetDateTimeOffset(Int32)

Recupera il valore della colonna specificata come DateTimeOffset oggetto .

GetDbDataReader(Int32)

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

(Ereditato da DbDataReader)
GetDecimal(Int32)

Ottiene il valore della colonna specificata come Decimal oggetto .

GetDouble(Int32)

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

GetEnumerator()

Restituisce un oggetto IEnumerator che scorre l'oggetto 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 come tipo. GetFieldValueAsync<T>(Int32, CancellationToken) è la versione asincrona di questo metodo.

GetFieldValueAsync<T>(Int32, CancellationToken)

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

GetFieldValueAsync<T>(Int32)

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 a 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 come 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 intero con segno a 64 bit.

GetLifetimeService()
Obsoleti.

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetName(Int32)

Ottiene il nome della colonna specificata.

GetOrdinal(String)

Ottiene l'ordinale di colonna, in base al nome della colonna.

GetProviderSpecificFieldType(Int32)

Ottiene un oggetto Object che rappresenta il tipo di campo specifico del provider sottostante.

GetProviderSpecificValue(Int32)

Ottiene un oggetto Object che rappresenta il valore specifico del provider sottostante.

GetProviderSpecificValues(Object[])

Ottiene una matrice di oggetti che rappresentano i valori specifici del provider sottostante.

GetSchemaTable()

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

GetSqlBinary(Int32)

Ottiene il valore della colonna specificata come oggetto SqlBinary.

GetSqlBoolean(Int32)

Ottiene il valore della colonna specificata come oggetto SqlBoolean.

GetSqlByte(Int32)

Ottiene il valore della colonna specificata come oggetto SqlByte.

GetSqlBytes(Int32)

Ottiene il valore della colonna specificata come SqlBytes.

GetSqlChars(Int32)

Ottiene il valore della colonna specificata come SqlChars.

GetSqlDateTime(Int32)

Ottiene il valore della colonna specificata come oggetto SqlDateTime.

GetSqlDecimal(Int32)

Ottiene il valore della colonna specificata come oggetto SqlDecimal.

GetSqlDouble(Int32)

Ottiene il valore della colonna specificata come oggetto SqlDouble.

GetSqlGuid(Int32)

Ottiene il valore della colonna specificata come oggetto SqlGuid.

GetSqlInt16(Int32)

Ottiene il valore della colonna specificata come oggetto SqlInt16.

GetSqlInt32(Int32)

Ottiene il valore della colonna specificata come oggetto SqlInt32.

GetSqlInt64(Int32)

Ottiene il valore della colonna specificata come oggetto SqlInt64.

GetSqlMoney(Int32)

Ottiene il valore della colonna specificata come oggetto SqlMoney.

GetSqlSingle(Int32)

Ottiene il valore della colonna specificata come oggetto SqlSingle.

GetSqlString(Int32)

Ottiene il valore della colonna specificata come oggetto SqlString.

GetSqlValue(Int32)

Restituisce il valore di dati nella colonna specificata come tipo di SQL Server.

GetSqlValues(Object[])

Riempie una matrice di Object che contiene i valori per tutte le colonne del record, espresse come tipi di 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

GetString(Int32)

Ottiene il valore della colonna specificata come stringa.

GetTextReader(Int32)

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

GetTimeSpan(Int32)

Recupera il valore della colonna specificata come TimeSpan oggetto .

GetType()

Ottiene il 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 di 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 specificato CommandBehavior corrisponde a quello dell'oggetto SqlDataReader .

IsDBNull(Int32)

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

IsDBNullAsync(Int32, CancellationToken)

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

Il token di annullamento può essere usato per richiedere che l'operazione venga abbandonata prima della scadenza del timeout del comando. Le eccezioni verranno segnalate tramite l'oggetto Task restituito.

IsDBNullAsync(Int32)

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

(Ereditato da DbDataReader)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(Ereditato da MarshalByRefObject)
NextResult()

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

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 di dati al risultato successivo, durante la lettura dei risultati delle istruzioni batch Transact-SQL.

Il token di annullamento può essere usato per richiedere che l'operazione venga abbandonata prima della scadenza del timeout del comando. Le eccezioni verranno segnalate tramite l'oggetto Task restituito.

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 sposta l'oggetto SqlDataReader al record successivo.

Il token di annullamento può essere usato per richiedere che l'operazione venga abbandonata prima della scadenza del timeout del comando. Le eccezioni verranno segnalate tramite l'oggetto Task restituito.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
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 un oggetto 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 usate dal lettore di dati.

IEnumerable.GetEnumerator()

Restituisce un enumeratore che può essere utilizzato per scorrere la raccolta di elementi.

Metodi di estensione

Nome Descrizione
AsParallel(IEnumerable)

Abilita la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un IEnumerable in un IQueryable.

CanGetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un IEnumerable al tipo specificato.

GetColumnSchema(DbDataReader)

Ottiene lo schema della colonna (DbColumn raccolta) per un oggetto DbDataReader.

OfType<TResult>(IEnumerable)

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

Si applica a

Vedi anche