Kategorien:
Suchbegriffe:
Suchfelder:
Suche starten
Neue Beiträge / Top 7
Alle Artikel / Liste
Bücher zu ASP/ASP.Net
Startseite / Hilfe
Fragen zu ASP/ASP.NET
Datenschutzrichtlinen
Impressum / Kontakt
Das ASP.Net Codebook. Die unentbehrliche Referenz für alle ASP.Net-Entwickler [Autoren: Stefan Falz, Karsten Samaschke]
Active Server Pages-FAQ
Active Server Pages - FAQ (v. 1.50) © 2000 - 2020 by Stefan Falz Webconsulting

GetFile! Dynamischer Dateiupload im Browser

Datenbankzugriffe Zurück Druckversion Stefan Falz 06.06.2002
Frage: Wie kann ich ohne System-DSN's auf eine Datenbank zugreifen?
Es gibt mehrere Arten, wie man auf eine Datenbank ohne eine System-DSN zugreifen kann.
Eine der am häufigsten benutzten ist die Verwendung einer Datei-DSN. Diese hat gegenüber
einer System-DSN den Vorteil, daß Sie Ihre Anwendung (oder nur die Datenbank) in andere
Ordner (oder auf andere Server) verschieben können, ohne jedesmal ihren ISP bitten zu müssen,
die System-DSN anzulegen oder anzupassen.

Es gibt aber auch sogenannte DSN-lose Verbindungen, die ganz ohne eine DSN auskommen.
Hierfür wird die Jet-Engine (für Access 2000 Jet 4.0) benötigt. Unter http://www.microsoft.com/data/
kann man die neuesten Datenbanktreiber (inkl. Jet-Engine) herunterladen.

Mit Hilfe der Jet-Engine können Sie eine Datenbankverbindung mit nur 3 Zeilen Quellcode herstellen.
Nachfolgend ein Beispiel, dass eine Verbindung zu einer Datenbank "datenbank.mdb" im Verzeichnis
"verzeichnis" unterhalb des aktuellen Verzeichnisses herstellt. (Zur Dokumenation sind ein paar Zeilen
mehr erforderlich ;)



[openjet.inc]
<%
' --- Verwenden der Jet 4.0 Engine für den Datenbankzugriff
Dim strProvider
    strProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"

' --- Angeben des Speicherpfads der Datenbank
Dim strDatabase
    strDatabase = "DATA SOURCE=" & Server.MapPath ("./") & "\verzeichnis\datenbank.mdb;"

' --- Angaben des Datenbankpassworts. Wird nur benötigt, wenn die DB passwortgeschützt ist
Dim strPassword
    strPassword = "Jet OLEDB:Database Password=<passwort>;"

' --- Zusammenstellen des gesamten Verbindungsstrings
Dim strComplete
    strComplete = strProvider & strDatabase & strPassword

' --- Öffnen der Datenbankverbindung
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open strComplete

    ' --- Hier sollte dann ihr Quellcode stehen
    ...

    objConn.Close
Set objConn = Nothing
%>



Falls Sie eine Access 97 Datenbank verwenden, sollten Sie die Jet4-Engine nicht für den Zugriff verwenden.
Eine genaue Erklärung finden Sie im Artikel 121. Für die Zugriffe auf Access
Versionen kleiner 2000 (also bis Version 97) können Sie das nachfolgende Beispiel verwenden.

[access97.inc]
<%
' --- Verwenden der Access ODBC Treiber für den Datenbankzugriff
Dim strDriver
    strDriver   = "DRIVER=Microsoft Access Driver (*.mdb);"

' --- Angeben des Speicherpfads der Datenbank
Dim strDatabase
    strDatabase = "DBQ=" & Server.MapPath ("./") & "\verzeichnis\datenbank.mdb;"

' --- Angaben des Usernamens und des Datenbankpassworts.
' --- Wird nur benötigt, wenn die DB passwortgeschützt ist
Dim strUsername
    strUsername = "UID=admin;"

Dim strPassword
    strPassword = "PWD=<passwort>;"

' --- Zusammenstellen des gesamten Verbindungsstrings
Dim strComplete
    strComplete = strDriver & strDatabase & strUser & strPassword

' --- Öffnen der Datenbankverbindung
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open strComplete

    ' --- Hier sollte dann ihr Quellcode stehen
    ...

    objConn.Close
Set objConn = Nothing
%>



Nachfolgend der Aufbau einer Datei-DSN (Beispiel für Access und SQL-Server):
[access.dsn]
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
ReadOnly=0
UserCommitSync=Yes
Threads=20
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=4096
ImplicitCommitSync=Yes
FIL=MS Access
DriverId=25

[sqlserver.dsn]
[ODBC]
PROVIDER=MSDASQL
DRIVER=SQL Server
WSID=localhost
APP=Spotprogramm Intranet AMS
SERVER=255.255.255.255



Mehr sollte in der eigentlichen DSN-Datei auch nicht drinstehen, da die restlichen Angaben,
wie Pfad zur Datenbank, Username, ... in einer Include-Datei (bzw. direkt in der ASP-Seite)
enthalten sind.

Die Einbindung einer solchen DSN erfolgt zum Beispiel folgendermaßen:
[access.inc]
<%
' --- Zuweisen des Pfads der DSN-Datei
    DSNFilePath = "filedsn=" & Server.MapPath ("./") & "\includes\access.dsn"

' --- Zuweisen des Pfads der Datenbank "datenbank.mdb"
    DBPath = "DBQ=" & Server.MapPath("./") & "\dbpfad\datenbank.mdb"

' --- Öffnen der Datenbankverbindung
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open DSNFilePath & ";" & DBPath & ";UID=Test;PWD=Test"

    ...

    objConn.Close
Set objConn = Nothing
%>



[sqlserver.inc]
<%
' -- Zuweisen des Pfads der DSN-Datei
    DSNFilePath = "filedsn=" & Server.MapPath ("./") & "\includes\sqlserver.dsn"

' --- Zuweisen der Datenbank
    DBName = "DATABASE=DB-NAME"

' --- Öffnen der Datenbankverbindung
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.open DSNFilePath & ";" & DBName & ";UID=Test;PWD=Test"

    ...

    objConn.Close
Set objConn = Nothing
%>



Wenn man auch eine SQL-Server Anbindung ganz ohne DSN (sei es System- oder Datei-DSN)
programmieren möchte, kann man z.B. die Verbindungsinformationen auch in einen String
schreiben und an die Open-Methode des Connection-Objekts übergeben

[sqlserver.inc]
<%
Dim connString
    connString = "PROVIDER=MSDASQL;"
    connString = connString & "DRIVER=SQL Server;"
    connString = connString & "SERVER=<ipadresse/name des sqlservers>;"
    connString = connString & "UID=<username>;"
    connString = connString & "PWD=<passwort>;"
    connString = connString & "DATABASE=<datenbankname>;""

Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open connString

    ...

    objConn.Close
Set objConn = Nothing
%>

Sehr gut
1 2 3 4 5 6
Ungenügend
Zurück | Bisherige Aufrufe: 51494 | Bisherige Bewertungen: 144 | Durchschnitt: 1,94
Stefan Falz Webconsulting