Home   Cover Cover Cover Cover
 

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:

output