Zugreifen auf eine Microsoft Access Datenbank

26.04.2005
Eine der am häufigsten benötigten Funktionalitäten bei der Erstellung dynamischer Websites ist die Anbindung von Datenbanken. ASP.NET stellt Ihnen mit ADO.NET ein sehr mächtiges Werkzeug zur Verfügung, mit dessen Hilfe Sie auf viele verschiedene Datenbanktypen zugreifen können, die über einen entsprechenden Treiber verfügen. Auf kleineren Websites werden oft Microsoft Access Datenbanken eingesetzt. Bei größeren Projekten bedient man sich meist eines Datenbankservers, wie z.B. Microsoft SQL Server, Oracle oder auch MySQL als Datenquelle. Für alle genannten Systeme sind entsprechende Datenbankprovider verfügbar, so dass man jede dieser Datenbanken über ADO.NET ansprechen kann.

Kategorie

Code-Snippet

Auswirkung

Arbeitserleichterung

Einsatzbereich

Webangebot

OS

Microsoft Windows Server 2003

Software

Microsoft Internet Information Server 6

Beschreibung

Eine der am häufigsten benötigten Funktionalitäten bei der Erstellung dynamischer Websites ist die Anbindung von Datenbanken. ASP.NET stellt Ihnen mit ADO.NET ein sehr mächtiges Werkzeug zur Verfügung, mit dessen Hilfe Sie auf viele verschiedene Datenbanktypen zugreifen können, die über einen entsprechenden Treiber verfügen. Auf kleineren Websites werden oft Microsoft Access Datenbanken eingesetzt. Bei größeren Projekten bedient man sich meist eines Datenbankservers, wie z.B. Microsoft SQL Server, Oracle oder auch MySQL als Datenquelle. Für alle genannten Systeme sind entsprechende Datenbankprovider verfügbar, so dass man jede dieser Datenbanken über ADO.NET ansprechen kann.

Lösung

ADO.NET bietet Ihnen verschiedene Klassen zum Zugriff auf die verschiedenen Datenbanktypen an. Für Microsoft Access bieten sich die Klassen des Namespace System.Data.OleDb an. Es gibt hier verschiedene Klassen, bspw. OleDbConnection, OleDbCommand, OleDbDataAdapter, ... Für eine Verbindung zur Datenbank ist in erster Linie die jeweilige Connection-Klasse zuständig. Innerhalb der ASPX-Datei müssen Sie kein Connection-Objekt erstellen. Dies erledigen wir in der dazugehörigen CodeBehind-Datei. Die ASPX-Datei enthält daher lediglich ein Label, über das wir eine Statusmeldung ausgeben.

<%@ Page Language="vb"
enableViewState="False"
AutoEventWireup="false"
Codebehind="Chapter02Example01.aspx.vb"
Inherits="codebook.aspnet.vb.Chapter02Example01" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<html>
<head>
<title>Chapter 02 Example 01</title>
<link rel="stylesheet"
href="styles/codebook.css"
type="text/css">
</head>
<body>
<asp:label id="lblMain" runat="server">
Label
</asp:label>
</body>
</html>

Listing 4.1: Zugreifen auf eine Microsoft Access Datenbank

Um uns ein wenig Tipparbeit zu ersparen, binden wir mittels der Anweisung Imports den Namespace System.Data.OleDb ein. Somit können wir auf die enthaltenen Klassen direkt zugreifen.

Imports System.Data.OleDb
Namespace codebook.aspnet.vb
Public Class Chapter02Example01
Inherits System.Web.UI.Page
Protected WithEvents lblMain As Label
Private Sub Page_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load

Erstellen der Verbindung

Als Erstes benötigen wir natürlich einige Angaben über die Datenbank. Wie Sie evtl. von Classic ASP her kennen, benötigen wir einen Connection-String, der sich aus dem zu verwendenden Provider und dem Pfad zur Datenbank selbst zusammensetzt.

Dim strProvider As String
strProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
Dim strDatabase As String
strDatabase = "DATA SOURCE=H:\codebook.NET\database\" & _
"database\codebook.mdb;"
Dim strComplete As String
strComplete = strProvider & strDatabase

Im nächsten Schritt erzeugen wir eine neue Instanz der OleDbConnection-Klasse. Diese bildet die Basis für die Zugriffe auf die Access-Datenbank. Der Eigenschaft ConnectionString übergeben wir die Angaben, die wir oben zusammengestellt haben. Danach versuchen wir, die Datenbank zu öffnen. Wenn dies fehlschlagen sollte, geben wir die erzeugte Fehlermeldung über das Label aus, ansonsten wird eine Erfolgsmeldung in die Ausgabe geschrieben.

Dim objConn As New OleDbConnection
objConn.ConnectionString = strComplete
Try
objConn.Open()
lblMain.Text = "Datenbankverbindung zur Access-" & _
"Datenbank erfolgreich hergestellt"
' --- Abfangen eines evtl. aufgetretenen Fehler
Catch ex As OleDbException
lblMain.Text = "<b>Fehler</b><br>" & ex.Message & "<br>"
lblMain.Text &= "<b>Quelle</b><br>" & ex.Source & "<br>"
Finally
' --- Do nothing
End Try
objConn.Close()
End Sub
End Class
End Namespace

Listing 4.2: Zugreifen auf eine Microsoft Access Datenbank.