Freigeben über


SqlDataReader Klasse

Definition

Bietet eine Möglichkeit zum Lesen eines Vorwärtsdatenstroms von Zeilen aus einer SQL Server-Datenbank. Diese Klasse kann nicht vererbt werden.

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
Vererbung
SqlDataReader
Vererbung
Vererbung
SqlDataReader
Implementiert

Beispiele

Im folgenden Beispiel wird ein SqlConnection, a SqlCommandund a SqlDataReader. Im Beispiel werden die Daten gelesen und in das Konsolenfenster geschrieben. Der Code schließt dann die SqlDataReader. Dies SqlConnection wird automatisch am Ende des using Codeblocks geschlossen.

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

Hinweise

Zum Erstellen eines SqlDataReaderObjekts müssen Sie die ExecuteReader Methode des SqlCommand Objekts aufrufen, anstatt direkt einen Konstruktor zu verwenden.

Während der Verwendung erfolgt, ist die SqlDataReader zugeordnete SqlConnection Aufgabe ausgelastet SqlDataReader, und es können keine anderen Vorgänge als das SqlConnection Schließen ausgeführt werden. Dies ist der Fall, bis die Close Methode der SqlDataReader Methode aufgerufen wird. Sie können z. B. erst nach dem Aufruf CloseAusgabeparameter abrufen.

Änderungen, die an einem Resultset durch einen anderen Prozess oder Thread vorgenommen wurden, während Daten gelesen werden, sind möglicherweise für den Benutzer der SqlDataReader. Das genaue Verhalten ist jedoch abhängig vom Timing.

IsClosed und RecordsAffected sind die einzigen Eigenschaften, die Sie nach dem SqlDataReader Schließen aufrufen können. Obwohl auf die RecordsAffected Eigenschaft während der SqlDataReader Vorhandenen zugegriffen werden kann, rufen Sie immer auf Close , bevor Sie den Wert zurückgeben, um einen genauen Rückgabewert RecordsAffected zu garantieren.

Bei Verwendung des sequenziellen Zugriffs (CommandBehavior.SequentialAccess) wird eine InvalidOperationException ausgelöst, wenn die SqlDataReader Position erweitert wird und ein anderer Lesevorgang in der vorherigen Spalte versucht wird.

Hinweis

Um eine optimale Leistung zu erzielen, SqlDataReader vermeiden Sie unnötige Objekte oder unnötige Kopien von Daten. Daher gibt es mehrere Aufrufe an Methoden, z GetValue . B. das Zurückgeben eines Verweises auf dasselbe Objekt. Seien Sie vorsichtig, wenn Sie den zugrunde liegenden Wert der von Methoden zurückgegebenen Objekte ändern, z GetValue. B. .

Eigenschaften

Name Beschreibung
Connection

Ruft das SqlConnection zugeordnete mit der SqlDataReader.

Depth

Ruft einen Wert ab, der die Tiefe der Schachtelung für die aktuelle Zeile angibt.

FieldCount

Ruft die Anzahl der Spalten in der aktuellen Zeile ab.

HasRows

Ruft einen Wert ab, der angibt, ob die SqlDataReader ein oder mehrere Zeilen enthält.

IsClosed

Ruft einen booleschen Wert ab, der angibt, ob die angegebene SqlDataReader Instanz geschlossen wurde.

Item[Int32]

Ruft den Wert der angegebenen Spalte im systemeigenen Format ab, wenn die Spalte Ordnungszahl angegeben ist.

Item[String]

Ruft den Wert der angegebenen Spalte im systemeigenen Format ab, das den Spaltennamen enthält.

RecordsAffected

Ruft die Anzahl der Zeilen geändert, eingefügt oder gelöscht durch Ausführung der Transact-SQL-Anweisung ab.

VisibleFieldCount

Ruft die Anzahl der Felder in dem SqlDataReader nicht ausgeblendeten ab.

Methoden

Name Beschreibung
Close()

Schließt das SqlDataReader Objekt.

CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
Dispose()

Gibt alle Ressourcen frei, die von der aktuellen Instanz der DbDataReader Klasse verwendet werden.

(Geerbt von DbDataReader)
Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den DbDataReader verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

(Geerbt von DbDataReader)
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetBoolean(Int32)

Ruft den Wert der angegebenen Spalte als booleschen Wert ab.

GetByte(Int32)

Ruft den Wert der angegebenen Spalte als Byte ab.

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

Liest einen Bytestrom aus dem angegebenen Spaltenoffset in den Puffer ein Array ab dem angegebenen Pufferoffset.

GetChar(Int32)

Ruft den Wert der angegebenen Spalte als einzelnes Zeichen ab.

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

Liest einen Datenstrom von Zeichen aus dem angegebenen Spaltenoffset in den Puffer als Array ab dem angegebenen Pufferoffset.

GetData(Int32)

Gibt einen IDataReader Wert für die angegebene Spalten-Ordnungszahl zurück.

GetData(Int32)

Gibt einen geschachtelten Datenleser für die angeforderte Spalte zurück.

(Geerbt von DbDataReader)
GetDataTypeName(Int32)

Ruft eine Zeichenfolge ab, die den Datentyp der angegebenen Spalte darstellt.

GetDateTime(Int32)

Ruft den Wert der angegebenen Spalte als DateTime Objekt ab.

GetDateTimeOffset(Int32)

Ruft den Wert der angegebenen Spalte als DateTimeOffset Objekt ab.

GetDbDataReader(Int32)

Gibt ein DbDataReader Objekt für die angeforderte Spalten-Ordnungszahl zurück, die mit einer anbieterspezifischen Implementierung überschrieben werden kann.

(Geerbt von DbDataReader)
GetDecimal(Int32)

Ruft den Wert der angegebenen Spalte als Decimal Objekt ab.

GetDouble(Int32)

Ruft den Wert der angegebenen Spalte als Gleitkommazahl mit doppelter Genauigkeit ab.

GetEnumerator()

Gibt einen IEnumerator Wert zurück, der durch die SqlDataReader.

GetFieldType(Int32)

Ruft den Type Datentyp des Objekts ab.

GetFieldValue<T>(Int32)

Ruft synchron den Wert der angegebenen Spalte als Typ ab. GetFieldValueAsync<T>(Int32, CancellationToken) ist die asynchrone Version dieser Methode.

GetFieldValueAsync<T>(Int32, CancellationToken)

Ruft asynchron den Wert der angegebenen Spalte als Typ ab. GetFieldValue<T>(Int32) ist die synchrone Version dieser Methode.

GetFieldValueAsync<T>(Int32)

Ruft asynchron den Wert der angegebenen Spalte als angeforderten Typ ab.

(Geerbt von DbDataReader)
GetFloat(Int32)

Ruft den Wert der angegebenen Spalte als Gleitkommazahl mit einfacher Genauigkeit ab.

GetGuid(Int32)

Ruft den Wert der angegebenen Spalte als global eindeutigen Bezeichner (GUID) ab.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetInt16(Int32)

Ruft den Wert der angegebenen Spalte als eine 16-Bit-ganzzahlige Vorzeichen ab.

GetInt32(Int32)

Ruft den Wert der angegebenen Spalte als 32-Bit-ganzzahlige Vorzeichen ab.

GetInt64(Int32)

Ruft den Wert der angegebenen Spalte als ganze 64-Bit-Ganzzahl ab.

GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetName(Int32)

Ruft den Namen der angegebenen Spalte ab.

GetOrdinal(String)

Ruft die Spalten-Ordnungszahl ab, wobei der Name der Spalte angegeben ist.

GetProviderSpecificFieldType(Int32)

Ruft eine Object Darstellung des zugrunde liegenden anbieterspezifischen Feldtyps ab.

GetProviderSpecificValue(Int32)

Ruft eine Object Darstellung des zugrunde liegenden anbieterspezifischen Werts ab.

GetProviderSpecificValues(Object[])

Ruft ein Array von Objekten ab, die eine Darstellung der zugrunde liegenden anbieterspezifischen Werte sind.

GetSchemaTable()

Gibt einen DataTable Wert zurück, der die Spaltenmetadaten der SqlDataReader.

GetSqlBinary(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlBinary.

GetSqlBoolean(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlBoolean.

GetSqlByte(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlByte.

GetSqlBytes(Int32)

Ruft den Wert der angegebenen Spalte als SqlBytes.

GetSqlChars(Int32)

Ruft den Wert der angegebenen Spalte als SqlChars.

GetSqlDateTime(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlDateTime.

GetSqlDecimal(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlDecimal.

GetSqlDouble(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlDouble.

GetSqlGuid(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlGuid.

GetSqlInt16(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlInt16.

GetSqlInt32(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlInt32.

GetSqlInt64(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlInt64.

GetSqlMoney(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlMoney.

GetSqlSingle(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlSingle.

GetSqlString(Int32)

Ruft den Wert der angegebenen Spalte als ein SqlString.

GetSqlValue(Int32)

Gibt den Datenwert in der angegebenen Spalte als SQL Server-Typ zurück.

GetSqlValues(Object[])

Füllt ein Array aus, das Object die Werte für alle Spalten im Datensatz enthält, ausgedrückt als SQL Server-Typen.

GetSqlXml(Int32)

Ruft den Wert der angegebenen Spalte als XML-Wert ab.

GetStream(Int32)

Ruft binär-, image-, varbinary-, UDT- und Variant-Datentypen als ein Stream.

GetString(Int32)

Ruft den Wert der angegebenen Spalte als Zeichenfolge ab.

GetTextReader(Int32)

Ruft Char-, NChar-, NText-, NVarChar-, Text-, varChar- und Variant-Datentypen als ein TextReader.

GetTimeSpan(Int32)

Ruft den Wert der angegebenen Spalte als TimeSpan Objekt ab.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(Int32)

Ruft den Wert der angegebenen Spalte im systemeigenen Format ab.

GetValues(Object[])

Füllt ein Array von Objekten mit den Spaltenwerten der aktuellen Zeile auf.

GetXmlReader(Int32)

Ruft Daten vom Typ XML als .XmlReader

InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
IsCommandBehavior(CommandBehavior)

Bestimmt, ob die angegebene CommandBehavior Übereinstimmung mit der SqlDataReader des .

IsDBNull(Int32)

Ruft einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält.

IsDBNullAsync(Int32, CancellationToken)

Eine asynchrone Version von IsDBNull(Int32), die einen Wert abruft, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Befehlstimeout verstrichen ist. Ausnahmen werden über das zurückgegebene Task-Objekt gemeldet.

IsDBNullAsync(Int32)

Ruft asynchron einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält.

(Geerbt von DbDataReader)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts.

(Geerbt von MarshalByRefObject)
NextResult()

Führt den Datenleser zum nächsten Ergebnis durch, wenn die Ergebnisse von Batch-Transact-SQL Anweisungen gelesen werden.

NextResultAsync()

Wechselt den Leser asynchron zum nächsten Ergebnis, wenn die Ergebnisse einer Reihe von Anweisungen gelesen werden.

(Geerbt von DbDataReader)
NextResultAsync(CancellationToken)

Eine asynchrone Version von NextResult(), die den Datenleser zum nächsten Ergebnis führt, wenn die Ergebnisse von Batch-Transact-SQL Anweisungen gelesen werden.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Befehlstimeout verstrichen ist. Ausnahmen werden über das zurückgegebene Task-Objekt gemeldet.

Read()

Wechselt zum SqlDataReader nächsten Datensatz.

ReadAsync()

Wechselt den Leser asynchron zum nächsten Datensatz in einem Resultset.

(Geerbt von DbDataReader)
ReadAsync(CancellationToken)

Eine asynchrone Version von Read(), die zum SqlDataReader nächsten Datensatz wechselt.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Befehlstimeout verstrichen ist. Ausnahmen werden über das zurückgegebene Task-Objekt gemeldet.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IDataReader.Close()

Eine Beschreibung dieses Mitglieds finden Sie unter Close().

(Geerbt von DbDataReader)
IDataReader.GetSchemaTable()

Eine Beschreibung dieses Mitglieds finden Sie unter GetSchemaTable().

(Geerbt von DbDataReader)
IDataRecord.GetData(Int32)

Gibt einen IDataReader Wert für die angegebene Spalten-Ordnungszahl zurück.

IDataRecord.GetData(Int32)

Eine Beschreibung dieses Mitglieds finden Sie unter GetData(Int32).

(Geerbt von DbDataReader)
IDisposable.Dispose()

Gibt alle Ressourcen frei, die vom Datenleser verwendet werden.

IEnumerable.GetEnumerator()

Gibt einen Enumerator zurück, der zum Durchlaufen der Elementauflistung verwendet werden kann.

Erweiterungsmethoden

Name Beschreibung
AsParallel(IEnumerable)

Aktiviert die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Wandelt eine IEnumerable in eine IQueryableum.

CanGetColumnSchema(DbDataReader)

Ruft einen Wert ab, der angibt, ob ein DbDataReader Spaltenschema abgerufen werden kann.

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um.

GetColumnSchema(DbDataReader)

Ruft das Spaltenschema (DbColumn Auflistung) für ein DbDataReader.

OfType<TResult>(IEnumerable)

Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ.

Gilt für:

Weitere Informationen