Oftmals möchte (oder kann, darf) man keine System DSN (Datenquelle) anlegen, um auf eine Datenbank mit ADO zugreifen zu können. Dann kann man sich auf 2 Arten helfen: mit einer sogenannten DSN-less Connection oder dem Direktzugriff über den OLE DB Provider.
BearbeitenDSN-Less Connections
Diese sind im Grunde sehr leicht zu erstellen - man muß nur den DSN Namen durch den Namen des ODBC Treibers und den Datenbankpfad austauschen, zb für MS Access sieht das folgendermaßen aus:
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="
strDSN = strDSN & Server.MapPath("/cgi-bin") & "\db.mdb;"
strDSN = strDSN & "FIL=MS Access;MaxBufferSize=512;PageTimeout=5;"
Conn.Open strDSN
Wie weiß ich welche Treiber installiert sind und was zwischen die geschweiften Klammern zu schreiben ist? Einfach in den ODBC Administrator zum Tab Treiber gehen - in der Spalte Name finden sich die Bezeichnungen die zwischen {} gehören!
BearbeitenDirektzugriff über OLE DB
OLE DB ist die Technogie, auf der ADO aufbaut - also wenn ich eine ODBC DSN mit ADO anspreche, dann wird die Datenbankverbindung tatsächlich über einen OLE DB Treiber ("Provider") aufgebaut - den OLE DB Provider für ODBC. Dieser verbindet dann zur Datenbank mit dem ODBC Treiber unter Zuhilfename des DSN.
Die OLE DB Provider gibt es für Access, SQL Server, Oracle und andere Datenbanken - also warum nicht direkt über OLE DB gehen und sich den Umweg (=Geschwindigkeitsverlust) über ODBC ersparen? Auch kein Problem, da ADO ja dafür gebaut wurde:
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider="Microsoft.Jet.OLEDB.4.0"
Conn.Open Server.MapPath("/cgi-bin") & "\db.mdb;"
Die Frage, wie ein Provider heißt, ist nicht so einfach zu beantworten wie für ODBC Treiber. Aber hier ist eine Liste, die weiterhilft:
| OLE DB Provider | Für Datenbank |
|---|
| MSDASQL | ODBC Provider |
| Microsoft.Jet.OLEDB.3.51 | Access 97 |
| Microsoft.Jet.OLEDB.4.0 | Access 2000 |
| SQLOLEDB | SQL Server 7 |
| MSDAORA | Oracle |
| ADsDSOObject | Active Directory |
| MSDataShape | Data Shaping Provider |
| MSIMDB | In-Memory Database (Windows 2000) |