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 : 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
Ereditarietà
SqlDataReader
Implementazioni

Esempio

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

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

}

Commenti

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

Mentre l'oggetto viene usato, l'oggetto SqlDataReader associato SqlConnection è occupato a servire l'oggetto SqlDataReadere non è possibile eseguire altre operazioni invece SqlConnection di chiuderla. Questo è il caso finché 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 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), viene generato un valore InvalidOperationException se la SqlDataReader posizione è avanzata e viene tentata un'altra operazione di lettura nella colonna precedente.

Nota

Per prestazioni ottimali, SqlDataReader evita di creare oggetti non necessari o di creare copie non necessarie dei dati. Pertanto, più chiamate a metodi come GetValue restituire 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.

SensitivityClassification

Ottiene le SensitivityClassification informazioni con .SqlDataReader

VisibleFieldCount

Ottiene il numero di campi non nascosti in SqlDataReader.

Metodi

Close()

Chiude l'oggetto SqlDataReader.

Dispose(Boolean)

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

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.

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.

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.

GetFieldValueAsync<T>(Int32, CancellationToken)

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

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).

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.

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.

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.

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.

GetTimeSpan(Int32)

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

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.

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, 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.

NextResult()

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

NextResultAsync(CancellationToken)

Versione asincrona di NextResult(), che avanza il lettore dati al risultato successivo, quando si legge i 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.

Read()

Sposta l'oggetto SqlDataReader al record successivo.

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.

Implementazioni dell'interfaccia esplicita

IDataRecord.GetData(Int32)

Restituisce IDataReader per l'ordinale di colonna specificato.

Si applica a