Kategorie: Datenbankzugriffe
Frage: Wann sollte ich ein Recordset für Datenbankoperationen benutzen
Sobald Sie Datensätze aus einer Datenbank abfragen möchte, empfiehlt sich der Einsatz
von <% Set objRS = Server.CreateObject('ADODB.Recordset') %> und anschliessendem
expliziten Öffnen des Recordsets mit <% objRS.Open SQL, objConn, 3, 3 %>.

Dies hat den Hintergrund, dass die Methode Execute des Connection-Objekts zwar auch ein
Recordset zurückliefert, wenn das SQL-Statement Datensätze mit SELECT ausliest, dieses
Recordset aber standardmässig mit Parametern erstellt wird, die häufg zu Problemen führen
können.

Die wichtigsten Unterschiede bei den Parametern:
- 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

Wenn Sie lediglich DML-Statements (UPDATE, INSERT, DELETE) absetzen möchten, also
die Datenbank ändern möchten, empfiehlt sich der Einsatz der Methode Execute des
Connection-Objekts.

<%
UpdateSQL = 'UPDATE <tabelle> SET <feld> = <wert> WHERE <feld_id> = <wert_id>
objConn.Execute UpdateSQL

InsertSQL = 'INSERT INTO <tabelle> (feld1, feld2) VALUES ('<wert1>', '<wert2>')
objConn.Execute InsertSQL

DeleteSQL = 'DELETE FROM <tabelle>  WHERE <feld_id> = <wert_id>
objConn.Execute DeleteSQL
%>
Copyright 2000 - 2024 by Stefan Falz Webconsulting