Verbindungsorientierter Zugriff
Zu Abschnitt 5.3 des Buchs
Dieses Beispiel zeigt den verbindungsorientierten Zugriff auf Datenbanken. Es werden die Angestellten der Firma Northwind
aus der Datenbank gelesen und auf der Konsole ausgegeben. Zuerst wird eine Verbindung aufgebaut und ein Kommandoobjekt für
eine SELECT-Anweisung erzeugt. Durch die Ausführung des Kommandos erhält man ein IDataReader -Objekt, mit dem die Ergebniszeilen
sequentiell gelesen und auf der Konsole ausgegeben werden.
5-3-EmployeeReaderSample.cs
using System;
using System.Data;
using System.Data.OleDb;
namespace Chapter5
{
public class EmployeeReader
{
public static void Main()
{
//---- Aufbauen einer Verbindung zur Northwind-Datenbank am lokalen Rechner
Console.WriteLine("Verbindung wird aufgebaut");
string connStr = "provider=SQLOLEDB; data source=(local)\\SQLEXPRESS; " +
" initial catalog=Northwind; user id=sa; password=sa;";
IDbConnection conn = null; // Verbindung deklarieren
try
{
conn = new OleDbConnection(connStr);
conn.Open(); // Verbindung anfordern
//---- SQL-Kommando aufbauen, um ID und Namen aller Angestellten abzufragen
IDbCommand cmd = conn.CreateCommand(); //erzeugt ein OleDbCommand
cmd.CommandText = "SELECT EmployeeID, LastName, FirstName " +
"FROM Employees";
//---- SQL-Kommando ausfuehren; es liefert einen OleDbDataReader
IDataReader reader = cmd.ExecuteReader();
object[] dataRow = new object[reader.FieldCount];
//---- Daten zeilenweise lesen und verarbeiten
while (reader.Read())
{ // solange noch Daten vorhanden sind
int cols = reader.GetValues(dataRow); // tatsaechliches Lesen
for (int i = 0; i < cols; i++) Console.Write("| {0} ", dataRow[i]);
Console.WriteLine();
}
//---- Reader schliessen
reader.Close();
}
catch (Exception e)
{ //---- Fehlerbehandlung
Console.WriteLine(e.Message);
}
finally
{
try
{
if (conn != null) conn.Close(); // Verbindung schliessen
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
}
}
}
}
|
Beim Ausführen des Programms wird folgende Ausgabe erzeugt:
|