Freigeben über


SqlDataReader-Klasse

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

Namespace: System.Data.SqlClient
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public Class SqlDataReader
    Inherits DbDataReader
    Implements IDataReader, IDisposable, IDataRecord
'Usage
Dim instance As SqlDataReader
public class SqlDataReader : DbDataReader, IDataReader, IDisposable, IDataRecord
public ref class SqlDataReader : public DbDataReader, IDataReader, IDisposable, IDataRecord
public class SqlDataReader extends DbDataReader implements IDataReader, IDisposable, 
    IDataRecord
public class SqlDataReader extends DbDataReader implements IDataReader, IDisposable, 
    IDataRecord

Hinweise

Anstelle der direkten Verwendung eines Konstruktors müssen Sie zum Erstellen eines SqlDataReader die ExecuteReader-Methode des SqlCommand-Objekts aufrufen.

Während der Verwendung des SqlDataReader ist die zugeordnete SqlConnection durch den Informationsfluss für den SqlDataReader belegt, sodass an der SqlConnection keine anderen Operationen ausgeführt werden können, außer diese zu schließen. Dies gilt solange, bis die Close-Methode von SqlDataReader aufgerufen wird. Sie können z. B. keine Ausgabeparameter abrufen, bis Sie Close aufgerufen haben.

Änderungen an einem Resultset, die während des Lesens der Daten durch einen anderen Prozess oder Thread vorgenommen werden, sind für Benutzer des SqlDataReader möglicherweise sichtbar. Das genaue Verhalten ist jedoch zeitabhängig.

Die IsClosed-Eigenschaft und die RecordsAffected-Eigenschaft sind die einzigen Eigenschaften, die nach dem Schließen von SqlDataReader aufgerufen werden können. Obwohl jederzeit auf die RecordsAffected-Eigenschaft zugegriffen werden kann, solange der SqlDataReader vorhanden ist, sollten Sie immer zuerst Close aufrufen, bevor der Wert von RecordsAffected zurückgegeben wird, um einen korrekten Rückgabewert zu erhalten.

Hinweis

SqlDataReader vermeidet das Erstellen nicht erforderlicher Objekte oder unnötiger Kopien von Daten, um eine optimale Leistung zu erzielen. Daher ergeben mehrere Aufrufe von Methoden wie GetValue einen Verweis auf das gleiche Objekt. Gehen Sie beim Ändern des zugrunde liegenden Werts der Objekte, die durch Methoden wie GetValue zurückgegeben werden, mit Bedacht vor.

Beispiel

Im folgenden Beispiel wird eine SqlConnection, ein SqlCommand und ein SqlDataReader erstellt. Im Beispiel werden die Daten gelesen und im Konsolenfenster ausgegeben. Danach wird der SqlDataReader geschlossen. Der SqlConnection wird am Ende des using-Codeblocks automatisch geschlossen.

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()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub
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())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }

        // Call Close when done reading.
        reader.Close();
    }
}

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.Data.Common.DbDataReader
      System.Data.SqlClient.SqlDataReader

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

SqlDataReader-Member
System.Data.SqlClient-Namespace

Weitere Ressourcen

Verbinden und Abrufen von Daten mit ADO.NET
Verwenden des .NET Framework-Datenanbieters für SQL Server