SqlDataReader-Klasse
Assembly: System.Data (in system.data.dll)
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. |
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 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(); } }
System.MarshalByRefObject
System.Data.Common.DbDataReader
System.Data.SqlClient.SqlDataReader
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.
Hinweis