1 Datenzugriffe über ADO .Net

 

"ADO.Net-Programmierung" ist ein Synonym für "moderner Datenzugriff".

In den Unterkapiteln

beschreibe ich allgemein, wie und mit welchen Mitteln aus ADO.Net man auf Datenquellen zugreifen kann (Connected Classes) und wie man die erhaltenen Daten im Arbeitsspeicher unabhängig von der Datenquelle weiterverarbeiten kann (Disconnected Classes). Wenn man den Verbindungsaufabau mittels .Net verstehen will, enthalten die beiden Kapiteln viele Beispiele zu den entsprechenden Klassen

Ein für mich wichtiger Aspekt, an dem ich auch den Aufbau der folgenden Unterkapitel anlehne, ist der einheitliche Zugriff auf Daten in unterschiedlichen Datenquellen, wie SqlServer, Microsoft Access sowie Excel. Selbstverständlich ist mit ADO.Net auch der Zugriff auf viele weitere Quellen wie OracleDatenbanken möglich, wenn die Voraussetzungen wie die passenden Provider am System vorliegen. Für mich sind vor allem die genannten Microsoft Produkte wichtig, zumal ich auch keine Testsysteme mit Oracle oder anderen Produkten zur Verfügung habe.

In den Unterkapiteln

gibt es mehrere Beispiele zu dem jeweiligen Produkt.

Literatur: ADO.Net ist ein riesiges Thema, zu dem die meiste Literatur nur für C# existiert. Meiner Meinung nach ein wirklich gutes Buch ist "Datenbank-Programmierung mit Visual C# 2010" von Microsoft Press. Die Beispiele sind, wie der Titel schon sagt in C#, aber soweit ist der Schritt von C# zur Powershell ja auch nicht. Die Struktur des Buchs sowie die Erklärungen zur Theorie hinter den Beispielen gefallen mir jedenfalls sehr gut.

Das zweite Buch auf meinem Schreibtisch "MCTS Self-Paced Training Kit (Exam 70-516): Accessing Data with Microsoft® .NET Framework 4" habe ich zufällig bei einer Geschäftsaufgabe zum Schnäppchenpreis erstanden. Auch wenn man nicht vorhat, die Zertifizierung 70-516 abzulegen, ist das Buch mit seinen klaren Beispielen und seiner klaren Struktur hilfreich beim Verständnis von ADO.Net

 

2 Einstieg in ADO.Net

Zu Beginn zwei umfangreiche MSDN-Links, die man sich als Einstiegsseiten zum Thema abspeichern kann.

Das Architekturbild des zweiten Links (siehe unten) findet man in der Literatur an vielen Stellen, meist etwas umgezeichnet, wieder. Für das Verständnis von ADO.NET, insbesondere für Antworten auf Fragen wie

  • welche Klassen enthält ADO.NET
  • was sind "verbundene Klassen" in ADO.NET
  • was sind "unverbundene Klassen" in ADO.NET
  • was ist ein DataSet
  • was ist ein Provider

halte ich dieses Schaubild für sehr hilfreich. 

Die ADO.NET Klassen lassen sich in zwei Gruppen unterteilen

  • Datenprovider (linke Seite)
  • Datenkonsumenten (rechte Seite)

Durch diese Architektur ist der Datenzugriff und die Datenverarbeitung voneinander getrennt. Die Verarbeitung der Daten ist damit unabhängig von der Art der Datenquelle, die eine SQL-, Oracle oder MSAccess Datenbank sein kann, aber auch eine Exceltabelle oder SAP.

 

2.1 Datenprovider

Die Gruppe Datenprovider (linker Teil des Schaubilds oben) hat die Aufgabe die Daten zur Verfügung zu stellen. Die wichtigsten Klassen des Bereichs der Datenprovider sind allgemein

  • Connectionklasse (Aufbau der Verbindung zur Datenquelle)
  • Commandklasse (Ausführen von Abfragen auf die Datenbank)
  • DataReaderklasse (schneller, lesender Zugriff auf die Datenquelle)
  • DataAdapterklasse (Datenbrücke zwischen Datenquelle und DataSet)

Da diese Klassen direkt mit der Datenquelle verbunden sind, werden sie auch "verbundene Klassen (Connected Classes)" genannt. Im oben gezeigten Architekturbild ist diese direkte Verbindung ersichtlich. Genauer ausgeführt sind die einzelnen Klassen nacheinander im Kapitel Connected Classes

 

2.2 Datenkonsumenten

Der Datenkonsument hingegen greift über den Datenprovider auf die Daten zu, um diese zu lesen, zu verändern oder zu speichern.
Die wichtigste Klasse der Datenkonsumenten ist das DataSet, das unter anderem aus Tabellen (Klasse: DataTable) mit Reihen und Spalten bestehen kann.
Ein DataSet ist ein unverbundenenes Objekt (Disconnected Class), da es unabhängig und nicht ständig mit der Datenquelle verbunden ist. (siehe ADO.NET Architekturbild, rechte Seite)