Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Datenbankzugriff mittels ADO.NET

Geschrieben von: Christian Holm
Kategorie: ADO.NET

Dieser Artikel beschreibt die grundlegenste Funktion von ADO.NET - den Zugriff auf eine Datenbank sowie das Befüllen eines sogenannten DataSets. Ein DataSet ist eine Struktur in ADO.NET, die zum Speichern von Daten und Datenbankstrukturen (wie Tabellen) dient. Zuerst werden wir eine Verbindung zu einer Datenbank mit Hilfe des OleDbConnection Objektes erstellen, und danach mit einem SQL-Statement eine Datenbankabfrage durchführen. Das Ergebnis der Abfrage wird in das DataSet geschrieben.

Der Einfachheit halber verzichte ich in diesem Artikel auf den Sourcecode der für ansprechende Darstellung im Browser zuständig ist. Diesen möchte ich Ihnen aber nur für den Moment vorenthalten, und werde ihn Ihnen in einem separaten Artikel präsentieren.

Bitte beachten Sie, daß dieser Artikel auf den Artikeln Was ist neu in ADO.NET und Das SQL Join Statement aufbaut. Da der Sourcecode der Beispiele in C# geschrieben ist, sollten Sie grundlegende Kenntnisse über dieser Programmiersprache haben - es finden sich dazu etliche Artikel bei AspHeute, die Ihnen das notwendige Wissen vermitteln.

Wenn Sie den Beispiel-Sourcecode (im Download 20001102.zip) selbst ausprobieren möchten, so benötigen Sie die Datenbanksoftware Microsoft SQL Server 7.0 (oder höher) - die Beispiele verwenden die folgende Zugangsberechtigung (Username / Password): uid=sa; pwd=;. Als Beispieldatenbank habe ich die Northwind Datenbank herangezogen. Diese ist standardmäßig in den Beispieldatenbanken des SQL Servers enthalten. Wenn die SQL Server Datenbank nicht auf dem lokalen Computer (dem Webserver) installiert ist, so müssen Sie zusätzlich den Data Source Parameter im Connection-String auf den Namen (oder die IP Adresse) des Datenbankservers ändern.

Die Angabe der Grundinformationen

Um in ADO.NET eine Verbindung zu einer Datenbank zu erstellen, verwenden Sie das OleDbConnection Objekt. Da wir den Sourcecode in einer ASP.NET Seite verwenden, müssen wir auf zwei .NET Namespaces referenzieren um dieses Objekt benutzen zu können. Die beiden benötigten Namespaces sind in unserem Fall System.Data und System.Data.OleDb.

Sehen wir uns nun die Umsetzung im Sourcecode an. Der erste Teil des Sourcecodes enthält die Referenzen auf die benötigten Namespaces, die Deklaration des Connection-Strings strConn der die Parameter für die Datenbankverbingung enthält, sowie die Deklaration des SQL Statements (strSQL) zum Ausführen der Datenbankabfrage:

<%@ Page Language="C#" %>

//Referenz auf die Namespaces
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%

// Deklaration des Connection Strings
  string strConn = "Provider= SQLOLEDB; Data Source=(local); " +
     "uid=sa; pwd=; Initial Catalog=Northwind;";
	 
// Deklaration des SQL Statements
  string strSQL = "SELECT Productname, CompanyName, UnitPrice " +
     "FROM Suppliers " +
     "INNER JOIN Products ON " +
     "(Suppliers.SupplierID = Products.SupplierID) " +
     "WHERE UnitPrice <= $70";
...

Der Connection String beinhaltet hier folgende Parameter: Die Art des Providers (Provider= SQLOLEDB), wo sich die Datenbank befindet (Data Source=(local);) - in unserem Fall auf einem "lokalen" Microsoft SQL Server, daher auf dem selben Computer wie der Webserver für die .aspx Seite - sowie die benötigten Zugangsinformationen (uid=sa; pwd=;). Damit das Skript zur Northwind Datenbank verbindet, ist der Parameter Initial Catalog=Northwind angegeben.

Anmerkung: Wenn Sie eine Verbindung zu einer Datenbank innerhalb einer ASP.NET Seite erstellen, können Sie aus zwei Providern wählen. Zur Verfügung stehen der OleDbConnection und der SqlConnection .NET Data Provider. Verwenden Sie den OleDbConnection Provider für beliebige Datenquellen wie MS Access 2000 oder andere gängige Datenbanken. Der SqlConnection Provider ist hochoptimiert und zur Kommunikation mit der MS SQL Server Datenbank gedacht. Der OleDbConnection Provider ist im System.Data.OleDb Namespace und der SqlConnection Provider im System.Data.SqlClient Namespace des .NET Frameworks vorhanden. Bei anderen Datenbanken ist der OleDbConnection Provider aus Performancegründen zu wählen.

Mit dem SQL Statement, welches in der Variable strSQL vom Datentyp string gespeichert ist, wollen wir alle Produkte der Northwind Datenbank auslesen, die maximal USD 70 kosten. Um detailliertere Informationen über die Produkte zu erhalten lassen wir uns noch zusätzlich die Lieferanten und den tatsächlichen Preis der Ware anzeigen.

Nachdem wir nun die System.Data und System.Data.OleDb Namespaces angegeben haben und die beiden erforderlichen Informationen - die Verbindungs-Parameter strConn sowie die SQL Abfrage strSQL - bereitgestellt sind, können wir nun zum Hauptteil schreiten:

Die Erstellung einer Verbindung zur Datenbank

Um eine Verbindung zu einer beliebigen Datenquelle mittles OleDbConnection Provider herzustellen, sind Statements wie die folgenden nötig:

...
OleDbConnection MyNWConn = new OleDbConnection(strConn);
MyNWConn.Open();
...

Um eine performance-optimierte Verbindung zu einer SQL Server Datenbank herzustellen, kann man natürlich auch den SqlConnection Provider benutzen. Hierfür müssen wir die folgenden Statments angeben:

...
SqlConnection MyNWConn = new SqlConnection("server=localhost;uid=sa;pwd=;database=Northwind");
MyNWConn.Open();
...

In dem obigen Abschnitt des Beispiel-Sourcecodes erstellen wir eine neue Instanz der OleDbConnection. Ähnlich wie unter der "alten" ADO Technologie verwenden wir die Methode Open des OleDbConnection (bzw. SqlConnection) Objekts um die Verbindung zur Datenbank auch physikalisch herzustellen.

Nun sind wir soweit, daß wir die angeforderten Daten in das DataSet schreiben können.

Das Befüllen des DataSets

Da ADO.NET mit disconnected Data Sets arbeitet, müssen wir ein neues DataSet Objekt erstellen (siehe auch Artikel Was ist neu in ADO.NET).

...
DataSet MyDataSet = new DataSet();
OleDbDataAdapter oCommand = new OleDbDataAdapter(strSQL,MyNWConn);
  
...

Die hochoptimierte Version für eine SQL Server Datenbankversion würde dabei wie folgt aussehen:

...
DataSet MyDataSet = new DataSet();
SqlDataAdapter oCommand = new SqlDataAdapter(strSQL,MyNWConn);
  
...

Das OleDbDataAdapter (bzw. SqlDataAdapter) Objekt sammelt die Informationen aus den Verbindungsdaten, die in der strConn Variable gespeichert sind; Und natürlich werden auch die dazugehörigen Abfrageparameter unseres SQL-Statments, die in der Variable strSQL gespeichert sind, an das oCommand Objekt übergeben.

Diese nun folgende Anweisung befüllt unser DataSet Objekt namens oDataSet:

...
oCommand.Fill(MyDataSet,"Lieferanten");
...

Die Beendigung der Verbindung bzw. die Resourcenfreigabe erfolgt wie gewohnt mittels Aufruf der Close Methode.

...
MyNWConn.Close();   

%>

Schlußbemerkung

Dieser Artikel zeigt natürlich nur einen sehr kleinen Ausschnitt von dem was ADO.NET bietet. Aber nichtdestotrotz erhalten Sie das Grundrüstzeug um eine Verbindung zu einer vom OleDbConnection Provider unterstützten Datenbank zu erstellen.

Sie haben gesehen welche .NET Namespaces anzugeben sind und wie man unter ADO.NET eine gültige Verbindung zu einer Datenbank angibt. Weil ADO.NET mit disconnected Data Sets arbeitet, d.h. einer im Speicher abgelegten Kopie eines Datenbankinhaltes einer oder mehrerer Datenbanken, müssen Sie zuerst das DataSet Objekt instanzieren um es danach mit der Fill Methode des OleDbDataAdapter Objektes zu befüllen.

Für hochoptimierte SQL Server Abfragen verwenden Sie statt der Objekte OleDbConnection und OleDbDataAdapter die auf den SQL Server zugeschnittenen Objekte SqlConnection und SqlDataAdapter.

Natürlich möchten Sie die erlangten bzw. gefilterten Informationen der Datenbank im Browser sichtbar machen. Wie dies in C# zu programmieren ist und worauf man achten muß, möchte ich Ihnen in einem der nächsten Artikel zum Thema ADO.NET zeigen.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

A Brief History of C#
Crystal Reports mit DataSets befüllen - Teil 1
Crystal Reports mit DataSets befüllen - Teil 2
DataViews als DataTable persistieren
Datenaufbereitung in ADO.NET
Der ODBC .NET Data Provider
Die ersten Schritte in Visual Basic .NET
Einführung in Typed DataSets
Einstellungssache - Applikationsdaten in web.config
Einträge numerieren im DataGrid
Formularbasierte Authentifizierung in fünf Minuten
Index Server Abfragen per Web Service
MS IE WebControls 101
Stored Procedures 101 in ADO.NET
Was ist neu in ADO.NET
Was ist neu in ASP.NET
Web.Config 101

Links zu anderen Sites

ADO+ Guides the Evolution of the Data Species
Introducing ADO+
Introducing ADO+: Data Access Services for the Microsoft .NET Framework
MSDN Online .NET Information

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Eine weitere sehr hilfreiche Resource ist das deutsche ASP.NET Wiki, das als zentrale Anlaufstelle für Tips, Tricks, Know How und alles Nützliche was man in seinem Alltag als (ASP).NET-Entwickler so braucht und entdeckt gedacht ist.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.