Link: Wichtiger Hinweis in eigener Sache!
Das hinzufügen, ändern und löschen von Daten per SQL-Anweisung ist recht einfach, Beispiele hierfür:
Datensatz hinzufügen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031
Dim rs, strConn, Conn, strPfadDB, SQL, Vorname, Nachname, Strasse, Plz Dim Ort
Vorname = "Otto" Nachname = "Normal" Strasse = "Musterstr. 25" Plz = "86150" Ort = "Augsburg"
set rs = Server.CreateObject("ADODB.Recordset") strPfadDB = Server.MapPath("~db\Test.mdb") strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPfadDB
SQL = "Insert Into tblAdressen (" & _ "Vorname, Nachname, Strasse, Plz, Ort) Values (" & _ "'" & Vorname & "','" & Nachname & "'," & _ "'" & Strasse & "','" & Plz & "','" & Ort & "')"
rs.Open SQL, strConn, 2, 3 set rs = nothing %> |
Zeile 20: Die Alphanumerischen Felder werden in Hochkommas angesprochen. Da die SQL-Anweisung sehr lang ist, wurde diese über mehrere Zeilen "verteilt". Dies kann entweder mit "SQL = SQL & ..." oder etwas einfacher, wie oben dargestellt.
Da ein Datensatz hinzugefügt werden soll, muss auch der Cursortype angepasst werden, hier wurde adOpenDynamic verwendet. Als Locktype adLockPessimistic, oftmals wird auch adLockOptimistic (=3) verwendet.
Die Anweisung rs.close fehlt, da kein Datensatz aus der Datenbank gelesen wurde. Falls Sie im obigen Programm die Anweisung rs.close dennoch setzen, erhalten Sie eine Fehlermeldung.
Datensatz ändern:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031
Dim rs, strConn, Conn, strPfadDB, SQL, Strasse, Nachname Strasse = "Musterstr. 27" Nachname = "Nor'mal"
set rs = Server.CreateObject("ADODB.Recordset") strPfadDB = Server.MapPath("~db\Test.mdb") strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPfadDB
SQL = "UPDATE tblAdressen SET Strasse='" & Strasse & "'" & _ "WHERE Nachname = '" & Nachname & "'"
rs.Open SQL, strConn, 2, 3 set rs = nothing %> |
Die meisten Zeilen sind Ihnen bereits aus der Insert-Anweisung bekannt. Relevanter Unterschied ist hier nur die SQL-Anweisung.
!HINWEIS! In der Zeile 10 ist eine oft vorkommende Fehlequelle. Enthält ein Wert (hier Nachname) ein Hochkomma, und wird dies bei bei der Programmierung nicht berücksichtigt, wird ein Fehler angezeigt. Allerdings: Diese Fehlermöglichkeit kann leider sehr gefährlich sein, denn ein kundiger Hacker kann hierdurch die Kontrolle über die Seite übernehmen. Mögliche Szenarien: Auslesen des ASP-Code. Auslesen, verändern oder löschen von Datensätze...
Wie also sollte etwas derartiges behandelt werden? 2 Möglichkeiten, entweder Sie löschen die Hockommas. Bei Email-Adressen, Postleitzahlen usw. sicherlich nicht falsch, besser: Sie verdoppeln das Hochkomma. Erinnern Sie sich? Um ein Anführungszeichen zu schreiben, muss in einer Response.Write-Anweisung das Anführungszeichen doppelt geschrieben werden.So ist es auch beim Hochkomma.
Verdoppelt wird das Hochkomma per Replace-Anweisung, Zeile 9:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031
Dim rs, strConn, Conn, strPfadDB, SQL, Strasse, Nachname Strasse = "Musterstr. 27" Nachname = Replace("Nor'mal", "'", "''")
set rs = Server.CreateObject("ADODB.Recordset") strPfadDB = Server.MapPath("~db\Test.mdb") strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPfadDB
SQL = "UPDATE tblAdressen SET Strasse='" & Strasse & "'" & _ "WHERE Nachname = '" & Nachname & "'"
rs.Open SQL, strConn, 2, 3 set rs = nothing %> |
Datensatz löschen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <% @ Language="VBScript" LCID = 1031 %><% Option Explicit Response.Buffer = true Session.LCID = 1031
Dim rs, strConn, Conn, strPfadDB, SQL, Strasse, Nachname Strasse = "Musterstr. 29" Nachname = "Normal"
set rs = Server.CreateObject("ADODB.Recordset") strPfadDB = Server.MapPath("~db\Test.mdb") strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPfadDB SQL = "DELETE FROM tblAdressen WHERE Nachname='" & Nachname & "'"
rs.Open SQL, strConn, 2, 3 set rs = nothing %> |
|