Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Häufig genügt ein Lesezugriff auf die Datensätze. Dabei müssen im Frontend meist nur einige für die Listendarstellung benötigte Komponenten gefüllt bzw. aktualisiert werden (ListBox, ComboBox, ListView, TreeView, DataGrid usw.). Aber auch für komplexere Logik innerhalb der Business-Objekte der mittleren Schicht (Middle-Tier) ist häufig nur ein ReadOnly-Zugriff auf Datensätze erforderlich.
Im .NET Framework gibt es für diesen Zweck den DataReader. Diese Klasse ist für einen einmaligen ReadOnly-Hochgeschwindigkeitszugriff auf eine Datensatzgruppe optimiert und ähnelt anderen Reader-Objekten wie TextReader, StreamReader und XmlReader.
In Abhängigkeit vom verwendeten .NET-Datenprovider gibt es auch hier unterschiedliche Typen (SqlData-Reader, OleDbDataReader).
Einen DataReader erzeugt man in der Regel nicht mit dem New-Konstruktor, sondern mit der Execute-Reader-Methode des zugrunde liegenden Command-Objekts:
Dim dr As DataReader = cmd.ExecuteReader()
Mitunter wird auch dem Execute-Konstruktor als Argument der Wert CloseConnection (aus der CommandBehavior-Enumeration) übergeben. Damit ist gewährleistet, dass die Verbindung automatisch nach dem Durchlauf des DataReaders geschlossen wird.
Das Auslesen der Informationen innerhalb einer Schleife ist typisch für die Arbeit mit dem DataReader.
Es ist wichtig, dass Sie den DataReader so schnell wie möglich nach dem Auslesen der Daten wieder schließen, da sonst das Connection-Objekt blockiert ist!
Hier das Ergebnis:
Damit wird das automatische Weiterbewegen zum nächsten Datensatz innerhalb der While-Schleife ermöglicht (Rückgabewert True/False).
Während GetValue – ähnlich der Item-Eigenschaft – den Wert einer Spalte (basierend auf dem Spalten-index) zurückgibt, nimmt GetValues ein Array entgegen, in welchem der DataReader den Inhalt der aktuellen Zeile ablegt. Mit GetValues wird beste Performance erreicht.