WEBDESIGN Active Server Pages (ASP) Datenbankzugriff mit ADO Allgemeines Auch mit ASP erfolgt der Zugriff auf eine Datenbank nach dem selben Schema wie bei VB oder VBA. Mit ASP ist es aber vielfach günstiger den DB-Zugriff auf eine Datenbank ohne System-DSN zuzugreifen. Diese hat gegenüber einer System-DSN den Vorteil, dass man relativ unabhängig von den Providereinstellungen ist. Voraussetzung ist, dass die Jet-Engine (für Access 2000 Jet 4.0) am Web-Server installiert ist (Download der aktuellen Version unter http://www.microsoft.com/data/). Der Codeverlauf gestaltet sich folgendermaßen: 1. 2. 3. 4. 5. 6. 7. 8. Erstellung des Connection- und des Recordset-Objektes Festlegung des Connection-Strings Festlegung des SQL-Statments Öffnen der Datenbankverbindung Öffnen des Recordsets Manipulation der Daten Schließen des Recordsets Schließen der Datenbankverbindung Die Angabe des Pfads zur Datenbank kann absolut oder relativ erfolgen: absolut: "DATA SOURCE=C:\inetpub\wwwroot\dbs\db1.mdb" relativ: "DATA SOURCE=" & Server.MapPath("./") & "/dbs/db1.mdb; Das Erstellen eines Connection- bzw. Recordset-Objekts geschieht folgendermaßen: set cn1 = Server.CreateObject("ADODB.Connection") set rs1 = Server.CreateObject("ADODB.Recordset") Die Deklaration der Variablen mittels DIM-Anweisungen kann entfallen. Abfrage von Datensätzen (execute) Wenn man aus einer Datenbank Datensätze nur abfragen möchte so ist Execute die schnellste Methode. Dabei sollte man aber beachten, dass bei Execute das Recordset-Objekts standardmässig mit Parametern erstellt wird, die häufg zu Problemen führen können: - CursorType ist 0 (es kann jeweils nur zum nächsten Datensatz gesprungen werden) LockType ist 1 (Das Recordset ist schreibgeschützt) BookMark ist nicht verfügbar (es können keine Lesezeichen gesetzt werden) PageCount ist nicht verfügbar, bzw. immer -1 (kein Blättern: "Seite x von y möglich) RecordCount ist nicht verfügbar, bzw. immer -1 (keine Ausgabe: "x Datensätze gefunden" möglich) mehrfaches Auslesen z.B. von Memofeldern ist nicht direkt möglich, sondern nur über Umwege <% Set cn1 = Server.CreateObject("ADODB.Connection") %> <% Set rs1 = Server.CreateObject("ADODB.Recordset") %> <% strCon = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" %> <% strCon = strCon & "DATA SOURCE=" & Server.MapPath ("./") & "/dbs/db1.mdb;" %> <% strSql = "SELECT * FROM tabelle1;" %> <% cn1.open strCon %> <% set rs1 = cn1.execute(strSql) %> <% do until rs1.eof %> <tr><td><%=rs1(“Feld1”)%></td></tr> <% rs1.movenext %> <% loop %> <% rs1.close %> <% cn1.close %> <% set rs1 = nothing %> <% set cn1 = nothing %> BHAK/BHAS Amstetten Helmut Wurzer © WEBDESIGN Active Server Pages (ASP) Datenbankzugriff mit ADO Abfrage von Datensätzen (open) Reichen die Paramter der Execute-Methode nicht aus, so empfiehlt sich die Methode Open. <% Set cn1 = Server.CreateObject("ADODB.Connection") %> <% Set rs1 = Server.CreateObject("ADODB.Recordset") %> <% strCon = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" %> <% strCon = strCon & "DATA SOURCE=" & Server.MapPath ("./") & "/dbs/db1.mdb;" %> <% strSql = "SELECT * FROM tabelle1;" %> <% cn1.open strCon %> <% rs1.open strSql, cn1, 3, 3 %> <% do until rs1.eof %> <tr><td><%=rs1(“Feld1”)%></td></tr> <% rs1.movenext %> <% loop %> <% rs1.close %> <% cn1.close %> <% set rs1 = nothing %> <% set cn1 = nothing %> Einfügen/Aktualisieren/Löschen eines Datensatzes Wenn man lediglich die SQL-Statements UPDATE, INSERT oder DELETE benötigt, also Datensätze ändern möchten, empfiehlt sich der Einsatz der Methode Execute des Connection-Objekts. Dabei verzichtet man auf ein Recordset-Objekt und sendet das SQL-Statemant direkt mittels Execute an die Datenbank: <% Set cn1 = Server.CreateObject("ADODB.Connection") %> <% strCon = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" %> <% strCon = strCon & "DATA SOURCE=" & Server.MapPath ("./") & "/dbs/db1.mdb;" %> <% strSql = "INSERT/UPDATE/DELETE .... ;" %> <% cn1.open strCon %> <% cn1.execute strSql %> <% cn1.close %> <% set cn1 = nothing %> Anmerkungen An dieser Stelle nochmals der Hinweis, dass es verschiedene Möglichkeiten beim Aufbau einer Datenbankverbindung gibt. Abhängig ist dies - von der gewählten Zugriffsmethode (ODBC mit oder ohne DSN, OLE DB), von der Datenquelle (Access97, Access2000, MySQL, Oracle usw.). Auch die Syntax kann variieren und hängt vor allem von persönlichen Vorlieben ab. BHAK/BHAS Amstetten Helmut Wurzer ©