Freigeben über


SqlDataReader Klasse

Definition

Stellt ein Verfahren zum Lesen eines Vorwärtsstreams von Zeilen aus einer SQL Server-Datenbank bereit. 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 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
Vererbung
SqlDataReader
Vererbung
Vererbung
SqlDataReader
Implementiert

Beispiele

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

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

Hinweise

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

Während der SqlDataReader verwendet wird, ist der zugeordnete SqlConnection beschäftigt, um den SqlDataReaderzu bedienen, und es können keine anderen Vorgänge als das SqlConnection Schließen ausgeführt werden. Dies ist der Fall, bis die Close Methode des SqlDataReader aufgerufen wird. Beispielsweise können Sie erst nach dem Aufrufen Closevon Ausgabeparametern abrufen.

Während des Lesens von Daten von einem anderen Prozess oder Thread an einem Resultset vorgenommene Änderungen sind für den Benutzer von SqlDataReader möglicherweise sichtbar. Das genaue Verhalten ist jedoch zeitabhängig.

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

Bei Verwendung des sequenziellen Zugriffs (CommandBehavior.SequentialAccess) wird ein InvalidOperationException ausgelöst, wenn die SqlDataReader Position erweitert ist und ein weiterer Lesevorgang für die vorherige Spalte versucht wird.

Hinweis

Um eine optimale Leistung zu erzielen, SqlDataReader vermeiden Sie das Erstellen unnötiger Objekte oder das Erstellen unnötiger Kopien von Daten. Daher werden mehrere Methoden aufgerufen, z GetValue . B. einen Verweis auf dasselbe Objekt zurückzugeben. Seien Sie vorsichtig, wenn Sie den zugrunde liegenden Wert der von Methoden wie zurückgegebenen GetValueObjekte ändern.

Eigenschaften

Connection

Ruft den SqlConnection ab, der dem SqlDataReader zugeordnet ist.

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 SqlDataReader eine oder mehrere Zeilen enthält.

IsClosed

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

Item[Int32]

Ruft bei angegebener Spaltenordnungszahl den Wert der angegebenen Spalte im systemeigenen Format ab.

Item[String]

Ruft bei angegebenem Spaltennamen den Wert der angegebenen Spalte im systemeigenen Format ab.

RecordsAffected

Ruft die Anzahl der durch die Ausführung der Transact-SQL-Anweisung geänderten, eingefügten oder gelöschten Zeilen ab.

VisibleFieldCount

Ruft die Anzahl der nicht ausgeblendeten Felder im SqlDataReader ab.

Methoden

Close()

Schließt das SqlDataReader-Objekt.

Close()

Schließt das DbDataReader-Objekt.

(Geerbt von DbDataReader)
CloseAsync()

Schließt das DbDataReader-Objekt asynchron

(Geerbt von DbDataReader)
CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.

(Geerbt von MarshalByRefObject)
Dispose()

Gibt alle von der aktuellen Instanz der DbDataReader-Klasse verwendeten Ressourcen frei.

(Geerbt von DbDataReader)
Dispose(Boolean)

Stellt ein Verfahren zum Lesen eines Vorwärtsstreams von Zeilen aus einer SQL Server-Datenbank bereit. Diese Klasse kann nicht vererbt werden.

Dispose(Boolean)

Gibt die von DbDataReader verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

(Geerbt von DbDataReader)
DisposeAsync()

Gibt alle von der aktuellen Instanz der DbDataReader-Klasse verwendeten Ressourcen asynchron frei.

(Geerbt von DbDataReader)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBoolean(Int32)

Ruft den Wert der angegebenen Spalte als booleschen Wert ab.

GetByte(Int32)

Ruft den Wert der angegebenen Spalte als ein Byte ab.

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

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

GetChar(Int32)

Ruft den Wert der angegebenen Spalte als Einzelzeichen ab.

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

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

GetColumnSchema()

Ruft die schreibgeschützte Spaltenschemasammlung ab.

GetColumnSchemaAsync(CancellationToken)

Dies ist die asynchrone Version von GetColumnSchema(DbDataReader). Anbieter sollten mit einer entsprechenden Implementierung überschreiben. Das cancellationToken kann optional berücksichtigt werden. Die Standardimplementierung ruft den asynchronen GetColumnSchema(DbDataReader)-Aufruf auf und gibt eine abgeschlossene Aufgabe zurück. Die Standardimplementierung gibt eine abgebrochene Aufgabe zurück, wenn sie einen bereits abgebrochenen cancellationToken erhalten wird. Die Ausnahmen, die von GetColumnSchema(DbDataReader) ausgelöst werden, werden über die zurückgegebene Task Exception-Eigenschaft übermittelt.

(Geerbt von DbDataReader)
GetData(Int32)

Gibt einen IDataReader für die angegebene Spaltenordnungszahl zurück.

GetData(Int32)

Gibt einen verschachtelten Datenreader 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 Spaltenordnungszahl zurück, das 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 zurück, der SqlDataReader durchläuft.

GetFieldType(Int32)

Ruft den Type ab, der den Datentyp des Objekts darstellt.

GetFieldValue<T>(Int32)

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

GetFieldValue<T>(Int32)

Ruft den Wert der angegebenen Spalte als angeforderten Typ ab.

(Geerbt von DbDataReader)
GetFieldValueAsync<T>(Int32)

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

(Geerbt von DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

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

GetFieldValueAsync<T>(Int32, CancellationToken)

Ruft den Wert der angegebenen Spalte asynchron 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 GUID (Globally Unique Identifier) ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetInt16(Int32)

Ruft den Wert der angegebenen Spalte als 16-Bit-Ganzzahl mit Vorzeichen ab.

GetInt32(Int32)

Ruft den Wert der angegebenen Spalte als ganze Zahl mit Vorzeichen und einer Länge von 32 Bit ab.

GetInt64(Int32)

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

GetLifetimeService()
Veraltet.

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

(Geerbt von MarshalByRefObject)
GetName(Int32)

Ruft den Namen der angegebenen Spalte ab.

GetOrdinal(String)

Ruft bei angegebenem Spaltennamen die Ordnungszahl der Spalte ab.

GetProviderSpecificFieldType(Int32)

Ruft ein Object ab, das eine Darstellung des Feldtyps ist, der für den zugrunde liegenden Anbieter spezifisch ist.

GetProviderSpecificValue(Int32)

Ruft ein Object ab, das eine Darstellung des Werts ist, der für den zugrunde liegenden Anbieter spezifisch ist.

GetProviderSpecificValues(Object[])

Ruft ein Array von Objekten ab, die die Werte darstellen, die für den zugrunde liegenden Anbieter spezifisch sind.

GetSchemaTable()

Gibt eine DataTable zurück, die die Spaltenmetadaten des SqlDataReader beschreibt.

GetSchemaTable()

Gibt eine DataTable zurück, die die Spaltenmetadaten des DbDataReader beschreibt. Gibt null zurück, wenn der ausgeführte Befehl kein Resultset zurückgegeben hat, oder nachdem NextResult() von false zurückgegeben wurde.

(Geerbt von DbDataReader)
GetSchemaTableAsync(CancellationToken)

Dies ist die asynchrone Version von GetSchemaTable(). Anbieter sollten mit einer entsprechenden Implementierung überschreiben. Das cancellationToken kann optional berücksichtigt werden. Die Standardimplementierung ruft den asynchronen GetSchemaTable()-Aufruf auf und gibt eine abgeschlossene Aufgabe zurück. Die Standardimplementierung gibt eine abgebrochene Aufgabe zurück, wenn sie einen bereits abgebrochenen cancellationToken erhalten wird. Die Ausnahmen, die von GetSchemaTable() ausgelöst werden, werden über die zurückgegebene Task Exception-Eigenschaft übermittelt.

(Geerbt von DbDataReader)
GetSqlBinary(Int32)

Ruft den Wert der angegebenen Spalte als SqlBinary ab.

GetSqlBoolean(Int32)

Ruft den Wert der angegebenen Spalte als SqlBoolean ab.

GetSqlByte(Int32)

Ruft den Wert der angegebenen Spalte als SqlByte ab.

GetSqlBytes(Int32)

Ruft den Wert der angegebenen Spalte als SqlBytes ab.

GetSqlChars(Int32)

Ruft den Wert der angegebenen Spalte als SqlChars ab.

GetSqlDateTime(Int32)

Ruft den Wert der angegebenen Spalte als SqlDateTime ab.

GetSqlDecimal(Int32)

Ruft den Wert der angegebenen Spalte als SqlDecimal ab.

GetSqlDouble(Int32)

Ruft den Wert der angegebenen Spalte als SqlDouble ab.

GetSqlGuid(Int32)

Ruft den Wert der angegebenen Spalte als SqlGuid ab.

GetSqlInt16(Int32)

Ruft den Wert der angegebenen Spalte als SqlInt16 ab.

GetSqlInt32(Int32)

Ruft den Wert der angegebenen Spalte als SqlInt32 ab.

GetSqlInt64(Int32)

Ruft den Wert der angegebenen Spalte als SqlInt64 ab.

GetSqlMoney(Int32)

Ruft den Wert der angegebenen Spalte als SqlMoney ab.

GetSqlSingle(Int32)

Ruft den Wert der angegebenen Spalte als SqlSingle ab.

GetSqlString(Int32)

Ruft den Wert der angegebenen Spalte als SqlString ab.

GetSqlValue(Int32)

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

GetSqlValues(Object[])

Füllt ein Array von Object, das die Werte aller Spalten im Datensatz als SQL Server-Typen enthält.

GetSqlXml(Int32)

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

GetStream(Int32)

Ruft Binary-, Varbinary-, Image-, UDT- und Variant-Datentypen als Stream ab.

GetStream(Int32)

Ruft einen Stream ab, um Daten aus der angegebenen Spalte abzurufen.

(Geerbt von DbDataReader)
GetString(Int32)

Ruft den Wert der angegebenen Spalte als eine Zeichenfolge ab.

GetTextReader(Int32)

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

GetTextReader(Int32)

Ruft einen Textreader zum Auslesen von Daten aus der Spalte ab.

(Geerbt von DbDataReader)
GetTimeSpan(Int32)

Ruft den Wert der angegebenen Spalte als TimeSpan-Objekt ab.

GetType()

Ruft den 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 ab.

InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.

(Geerbt von MarshalByRefObject)
IsCommandBehavior(CommandBehavior)

Bestimmt, ob das angegebene CommandBehavior zu dem von SqlDataReader passt.

IsDBNull(Int32)

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

IsDBNullAsync(Int32)

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

(Geerbt von DbDataReader)
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 Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Aufgabenobjekt gemeldet.

IsDBNullAsync(Int32, CancellationToken)

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 des aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

(Geerbt von MarshalByRefObject)
NextResult()

Setzt den Datenreader beim Lesen von Transact-SQL-Batchanweisungen auf das nächste Ergebnis.

NextResultAsync()

Setzt den Datenreader beim Lesen der Ergebnisse von Batchanweisungen asynchron auf das nächste Ergebnis.

(Geerbt von DbDataReader)
NextResultAsync(CancellationToken)

Eine asynchrone Version von NextResult(), die den Datenleser beim Lesen der Ergebnisse von Batch Transact-SQL-Anweisungen zum nächsten Ergebnis weiterversetzt.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Aufgabenobjekt gemeldet.

NextResultAsync(CancellationToken)

Setzt den Datenreader beim Lesen der Ergebnisse von Batchanweisungen asynchron auf das nächste Ergebnis.

(Geerbt von DbDataReader)
Read()

Setzt den SqlDataReader auf den nächsten Datensatz.

ReadAsync()

Setzt den Reader asynchron auf den nächsten Datensatz in einem Resultset.

(Geerbt von DbDataReader)
ReadAsync(CancellationToken)

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

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Aufgabenobjekt gemeldet.

ReadAsync(CancellationToken)

Setzt den Reader asynchron auf den nächsten Datensatz in einem Resultset.

(Geerbt von DbDataReader)
ToString()

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

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IDataReader.Close()

Eine Beschreibung dieses Elements finden Sie unter Close().

(Geerbt von DbDataReader)
IDataReader.GetSchemaTable()

Eine Beschreibung dieses Elements finden Sie unter GetSchemaTable().

(Geerbt von DbDataReader)
IDataRecord.GetData(Int32)

Gibt einen IDataReader für die angegebene Spaltenordnungszahl zurück.

IDataRecord.GetData(Int32)

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

(Geerbt von DbDataReader)
IDisposable.Dispose()

Gibt alle vom Datenreader verwendeten Ressourcen frei.

IEnumerable.GetEnumerator()

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

Erweiterungsmethoden

CanGetColumnSchema(DbDataReader)

Ruft einen Wert ab, der angibt, ob ein DbDataReader-Objekt ein Spaltenschema haben kann.

GetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um

OfType<TResult>(IEnumerable)

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs

AsParallel(IEnumerable)

Ermöglicht die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Konvertiert einen IEnumerable in einen IQueryable.

Gilt für:

Weitere Informationen