Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Wer lange mit Access gearbeitet hat, dem ist der Datenzugriff über die DAO-Bibliothek mit dem Recordset-Objekt, das Bearbeiten mit AddNew, Update und Edit sowie das Formulieren von SQL-Aktionsabfragen für die Execute-Anweisung in Fleisch und Blut übergegangen. Nun heißt es umdenken: Unter der Datenzugriffsbibliothek ADO.NET sieht vieles anders aus. Diese Artikelreihe zeigt, wie Sie die unter Access gelernten Abläufe auch mit Visual Studio unter C#/ADO.NET programmieren können.
ADO.NET ist nicht etwa der Nachfolger der zwischenzeitlich aufgekommenen ADODB-Bibliothek, die Sie auch in Access nutzen konnten (und können). Es ist eine komplett neue Bibliothek, die Microsoft für das .NET-Framework geschaffen hat.
ADO.NET bietet teilweise Datenzugriff mit offener Verbindung, teilweise verbindungslosen Zugriff an. Unter Access können Sie beispielsweise ein ADODB-Recordset mit den Daten einer Tabelle füllen und dann die Verbindung lösen, um die Daten zu verändern, ohne dass sich dies auf die zugrunde liegende Tabelle auswirkt. Dies geschieht mit vielen Objekten unter ADO.NET genauso.
Provider
Unter Access konnten Sie entweder direkt über die CurrentDb– oder die OpenDatabase-Funktion ein Database-Objekt referenzieren und dann mit Methoden wie Execute, OpenRecordset et cetera schreibend oder lesend/schreibend auf die Daten zugreifen. Oder Sie haben per ODBC mit einer entsprechenden Verbindungszeichenfolge auf weitere Datenbanken wie MySQL oder Microsoft SQL Server zugegriffen. Unter C# sieht dies etwas anders aus.
Hier verwenden Sie zwar auch noch eine Verbindungszeichenfolge, jedoch legen Sie sich bereits zuvor auf einen Datenprovider fest.
Es gibt beispielsweise die folgenden Provider:
- SqlClient: Microsoft SQL Server
- OleDb: Zugriff über einen OleDb-Provider, beispielsweise für den Zugriff auf Access-Datenbanken.
- Odbc: Zugriff auf Datenbanken über den jeweiligen ODBC-Treiber, zum Beispiel auf MySQL-Datenbanken oder ältere Access-Datenbanken wie Access 97.
Je nachdem, welchen Sie benötigen, fügen Sie Ihrer Klasse einen Verweis auf den jeweiligen Namespace hinzu:
//Für OleDb: using System.Data.OleDb; //Für Odbc: using System.Data.Odbc; //Für SQL Server: using System.Data.SqlClient;
Beispieldatenbank
Für die Beispiele dieses Artikels verwenden wir eine Access-Datenbank, da wir diese einfach als Datei mitliefern können. Das heißt, dass wir den OleDb-Provider nutzen wollen:
using System.Data.OleDb;
Die Beispieldatenbank ist die Südsturm-Datenbank, die viele Leser vermutlich schon vom Magazin Access im Unternehmen kennen.
Die Datenbank enthält einige Tabellen, die wir für die folgenden Beispiele nutzen werden. Bild 1 zeigt das Datenmodell dieser Datenbank.
Bild 1: Datenmodell der Beispieldatenbank
Speicherort der Datenbank
Während der Tests werden wir die Anwendung von Visual Studio aus mit F5 starten. Die ADONET.exe-Datei wird dann im Unterverzeichnis \bin\debug des Projektordners erstellt werden.
Damit wir ohne weitere Pfadangaben auf die Datei Suedsturm.mdb zugreifen können, fügen wir auch die Datenbankdatei zu diesem Verzeichnis hinzu.
Beispielprojekt
Als Beispielprojekt verwenden wir zunächst eine Konsolenanwendung (siehe Ordner ADONET im Download). Die einzelnen Beispiele können Sie jeweils in die Methode Main einfügen und ausführen.
Verbindung aufbauen