Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.Data.OleDb.OleDbDataReader aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Ein DataReader ist eine besonders effiziente Klasse zum Lesen von Daten aus (OLEDB-)Datenquellen. Zur Steigerung der Performance unterliegt ein DataReader folgenden Beschränkungen:
- Daten können nur gelesen werden.
- Daten können nur vorwärts (d.h. nur einmal) gelesen werden.
Damit entspricht ein DataReader einem RecordSet vom Typ read-only/forward-only aus dem klassischen ADO.
Vorgehensweise
Um Daten mit einem DataReader zu lesen, sind folgende Schritte notwendig:
- Aufbau einer Verbindung zu der Datenbank mit einem OleDbConnection-Objekt. Bei der Instanziierung dieses Objekts kann die Verbindungszeichenfolge übergeben werden.
- Instanziierung der Klasse OleDbCommand und Bindung dieses Objekts an das OleDbConnection-Objekt über die Eigenschaft Connection
- Festlegung eines SQL-Befehls im OleDbCommand-Objekt in der Eigenschaft CommandText
Beispiel
Die folgende Routine listet aus der Tabelle "Produkte" alle Produktdatensätze auf, die zur Kategorie 23 gehören.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Ausgabe einer Tabelle mit Hilfe eines DataReaders
' (C) Holger@Schwichtenberg.de
' ============================
Sub ADONET_DR1()
Dim Conn As OleDbConnection
Dim Com As OleDbCommand
Dim DR As OleDbDataReader
' --- Verbindung aufbauen
Conn = New OleDbConnection(CONNSTRING)
Conn.Open()
' --- Befehl definieren
Com = New OleDbCommand()
Com.Connection = Conn
Com.CommandText = _
"SELECT * FROM Produkte WHERE Kategorie = 23"
' --- Befehl ausführen
DR = Com.ExecuteReader()
' --- Daten lesen
While DR.Read() = True
out(DR.Item("Name").ToString & _
" (Produkt #" & DR.Item("ID").ToString & ") " & _
" kostet " & _
DR.Item("Preis").ToString & " €")
End While
' --- Schließen
DR.Close()
Conn.Close()
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.Data;
using System.Data.OleDb;
namespace FCLBuch._SystemData {
public class SamplesADONETDataReader {
public void ADONET_DR1() {
// Ausgabe einer Tabelle mit Hilfe eines Datareaders
FclOutput.PrintOut( "Produktliste mit DataReader ausgeben" );
// Verbindung aufbauen
OleDbConnection conn = new OleDbConnection( ADONET_Globals.ConnectionString );
conn.Open();
// Befehl definieren
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Produkte WHERE Kategorie = 23";
// Befehl ausführen
OleDbDataReader DR = cmd.ExecuteReader();
// Daten lesen
while ( DR.Read() ) {
FclOutput.PrintOut( DR["Name"].ToString() +
" (Produkt #" + DR["ID"].ToString() + ") " +
" kostet " +
DR["Preis"].ToString() + " €" );
}
// schließen
DR.Close();
conn.Close();
}
}
}
Hinweise
Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und
PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung
von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B.
Console.WriteLine() einsetzen.
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.Data.OleDb.OleDbDataReader'
Übersicht über den FCL-Namensraum 'System.Data.OleDb'
.NET & Visual Studio Community Portal