5. Öffnen des Recordsets

Werbung
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 ©
Herunterladen