Bevor Sie auf Daten einer Datenbank zugreifen können, müssen Sie sich erst einmal mit der Datenbank verbinden. Dieses Kapitel zeigt wie.
23 Datenbankverbindung mit ADO.NET
Vor der Einführung von ADO.NET im Jahr 2002 hat Microsoft verschiedene Datenzugriffstechnologien für den Zugriff auf und das Speichern von Daten eingesetzt. Der direkte Vorgänger von ADO.NET war Microsofts ActiveX Data Objects (ADO), eine verbindungsorientierte Datenzugriffstechnologie, der allerdings Schlüsselfunktionen fehlen, um auch sehr große, verteilte Anwendungen zu erstellen.
ADO.NET integriert sich mit seinen Klassen in mehrere Namensräume des .NET-Frameworks. Von der Idee her soll ADO.NET den Entwicklern dabei helfen, effiziente mehrschichtige Datenbankanwendungen über Intranets und das Internet hinweg zu erstellen. Daraus resultiert eine zweischichtige Klassenarchitektur: Es gibt Klassen, deren Objekte mit der Datenbank verbunden sind, und Klassen, deren Objekte als unverbundene Objekte bezeichnet werden. Zu den verbundenen Objekten zählen unter anderem die Klassen Connection, Command und DataAdapter, zu den unverbundenen die Klasse DataSet und DataTable. Auf alle werden wir im weiteren Verlauf noch eingehen.
Sie können nicht erwarten, dass in diesem und den folgenden Kapiteln sämtliche Aspekte von ADO.NET erläutert werden. Dafür ist das Objektmodell mit allen seinen Möglichkeiten einfach zu komplex. Es würde für sich allein ein ganzes Buch füllen. Ich werde aber versuchen, Ihnen die meiner Ansicht nach wichtigsten Klassen vorzustellen, und Ihnen zeigen, wie Sie Daten abrufen und eine Datenbank aktualisieren können.
23.1 ADO.NET-Provider 

Bevor man auf die Dateninformationen in einer Datenbank zugreifen kann, muss man eine Verbindung zu der Datenquelle herstellen. ADO.NET stellt dazu passende Klassen zur Verfügung, mit denen eine Verbindung aufgebaut und gesteuert werden kann.
Zuerst muss der Typ des Datenspeichers bekannt sein. Er legt den Datenprovider fest. Das .NET Framework stellt vier zur Verfügung:
- SqlClient-Provider
- OleDb-Provider
- Odbc-Provider
- Oracle-Provider
Ein Datenprovider ist ein Satz von Klassen, die den Zugriff auf einen bestimmten Datenspeichertyp ermöglichen. Jeder .NET-Datenprovider implementiert dabei die gleichen Basisklassen, beispielsweise DbConnection, DbCommand und DbDataAdapter. Der Name der konkreten Implementation hängt vom gewählten Provider ab. So bietet der SqlClient-Provider beispielsweise die Klasse SqlConnection an und der OleDb-Datenprovider die Klasse OleDbConnection. Unabhängig davon, für welchen Datenprovider Sie sich entscheiden, bleiben die Schnittstellen und damit die Funktionalitäten gleich. Nahezu unabhängig von der Providerwahl ist auch der Programmcode. Sollten Sie zu einem späteren Zeitpunkt den Provider wechseln, brauchen Sie möglicherweise den Programmcode überhaupt nicht zu überarbeiten.
Häufig sind Sie nicht auf einen einzigen Datenprovider festgelegt, sondern können für den Zugriff auf eine Datenquelle zwischen mehreren auswählen. Ist die Datenquelle ein Microsoft SQL Server in der Version 7.0 oder höher, empfiehlt sich der SqlClient-Datenprovider, weil dieser für die genannten Versionen des SQL Servers optimiert ist.
SQL Server
Jeder .NET-Datenprovider hat einen eigenen Namensraum, der ein Unternamensraum von System.Data ist und mit Imports bekannt gegeben werden sollte. In den Beispielen dieses Kapitels werden wir ausschließlich den SqlClient-Datenprovider benutzen. Für Ihre Programme können Sie zum Testen eine kostenlose Variante des SQL Servers nutzen (siehe http://www.microsoft.com/sql/editions/express/default.mspx). In den Beispielen wurde der SQL Server 2005 verwendet. Die Verwaltung der Software ist am einfachsten mit den Management Tools möglich (in SQL Server Express with Advanced Services enthalten). Sie ersetzen den Query Analyzer und Enterprise Manager früherer Versionen.
Hinweis |
Wird nach der Installation einer Express Edition, zum Beispiel durch Visual Studio, ein anderer SQL Server installiert, kann es passieren, dass einige Zusatzprogramme kommentarlos nicht installiert werden. |
In einigen Newsgroups wird über Probleme durch diese Parallelinstallation geklagt. Sie können die Express Edition über die Systemsteuerung inklusive der gemeinsamen Komponenten deinstallieren (alle anderen Lösungsvorschläge scheiterten in meiner Installation). Nach Druck auf die
-Taste wird eine Auswahl der Serverinstanzen angeboten. Nach der Deinstallation der parallelen Express Edition installieren Sie die Tools explizit mit <DVD>\GERMAN\SQL2005\DEVELOPER\SQL Server x86\Tools\Setup\SqlRun_Tools.msi. Bei Schwierigkeiten sollten Sie den Rechner vor der Tools-Installation neu starten.
In Extremfällen können Sie die Express Edition wie unter http://support.microsoft.com/kb/909967 beschrieben, manuell deinstallieren und gemäß http://msdn.microsoft.com/en-us/library/ms144259.aspx die Tools manuell installieren.
Hinweis |
Hat ein Windows-Benutzer keine Administratorrechte, kann eine integrierte Windows-Authentifizierung scheitern. |
Im SQL Server Management Studio können Sie (als Windows- oder SQL Server-Administrator) über den Knoten <SQL Server>/Security/Logins im Objekt-Explorer einen Benutzer hinzufügen. In dessen Eigenschaften müssen Sie noch Berechtigungen für zu verarbeitende Datenbanken vergeben und Serverrollen zuweisen (siehe Tabelle 23.1).
Rolle | Berechtigung |
dbo db_owner |
Rollen Mitglieder hinzufügen, Datenbanken sichern/wiederherstellen, Checkpoint setzen, Objektberechtigungen in der Datenbank erteilen |
db_ddladmin |
Nur DDL-Befehle ausführen |
db_accessadmin |
Datenbankbenutzer verwalten |
db_securityadmin |
Zugriffsberechtigung steuern: GRANT, REVOKE |
db_backupoperator |
Datensicherungen |
db_datareader |
Abfrage: SELECT |
db_datawriter |
Änderung: INSERT, UPDATE, DELETE |
db_denydatareader |
Kein SELECT |
db_denydatawriter |
Kein INSERT, UPDATE, DELETE |
Beispieldatenbank »Northwind«
Für unsere Beispiele in den folgenden Kapiteln benötigen wir eine Datenbank. Die altbekannte Northwind soll uns als Beispieldatenbank dienen. Laden Sie sich deshalb aus dem Internet die Datei Northwind.mdf herunter, und installieren Sie sie unter dem SQL Server (siehe http://technet.microsoft.com/de-de/library/ms144235.aspx). Die Datei instnwnd.sql öffnen Sie im SQL Server Management Studio und führen die Abfrage aus.
Hinweis |
Zur Ausführung braucht der Benutzer db_datareader/writer-Rechte in der Datenbank master und und muss die Serverrolle dbcreator haben. |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.