asphelper.de - ASPKurs - Daten hinzügen, ändern und löschen.

Link: Wichtiger Hinweis in eigener Sache!


ADO, ODBC und OLESQLDaten aus einer Tabelle auslesenDaten hinzügen, ändern und löschen.
Datenmanipulation per ADOPraxisbeispiel AdressenverwaltungAdressenverwaltung, Teil 2Adressenverwaltung, Teil 3
Adressenverwaltung, Teil 4Adressenverwaltung, Teil 5Adressenverwaltung, Teil 6 




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 %>


Zurück  |  Vor

top top
© Copyright By Klaus Keller, 2001-2008 - Alle Rechte vorbehalten.