ASP - Datenbankkurs (Ihre Datenbank im Internet)
(c) 1998 - 2002 by Stefan Falz Webconsulting
Überblick
Ein Datensatz ist ein Bestandteil einer Tabelle oder besser gesagt, genau eine Zeile in der Tabelle.
Er setzt sich aus einem oder mehreren Feldern zusammen, wie z.B. Artikelnummer, Artikelbeschreibung, Preis, ....
In diesem Abschnitt geht es um die Möglichkeiten der Verwendung von Datensätzen.
Dies setzt voraus, daß Sie die Seite SQL-Abfragen schon gelesen haben, bzw. den Aufbau kennen.
Die benötigten Objekte zur Ausgabe eines Datensatzes in ASP sind:
- conn = Connection -> Objektvariable (ADODB.Connection) Verbindung zur Datenbank
- rs = RecordSet -> Objektvariable (ADODB.Recordset) Verweis auf Datensatz
- rs.Fields("Feldname") = Zugriff auf ein Datenfeld innerhalb des RecordSets
Anzeigen
Die häufigste Verwendung eines Datensatzes wird die Anzeige der Feldinhalte des Satzes sein.
In unserem Beispiel suchen wir den Kunden mit der Kundennummer 789123. Die Kundennummer
übergeben wir als Teil eines Links. Dann sieht unser SQL-String folgendermaßen aus:
SQL = "Select * from [Kunden] where [Kundennummer] = " &Request.QueryString("Kundennummer") & "
Um die Feldinhalte in den HTML-Text zu schreiben, verwenden wir folgenden Quelltext:
Kundennummer <% = rs.Fields("Kundennummer") %>
KundenPLZ <% = rs.Fields("KundenPLZ") %>
KundenName <% = rs.Fields("KundenName") %>
Dies bewirkt unter der Voraussetzung, daß diese Angaben in der Tabelle Artikelstamm stehen, folgende Ausgabe:
Kundennummer: 789123
KundenPLZ: 55555
KundenName: Meiertest GmbH
<% = rs.Fields("Feldname")%> bewirkt dasselbe wie <% Response.Write rs.Fields("Feldname")%>, ist aber viel kürzer.
Allerdings kann man diese Abkürzung auch nur bei einer Ausgabe innerhalb des eigentlichen HTML-Texts benutzen.
Sollten Sie eine mehrzeilige Prozedur haben, müssen Sie Response.Write explizit angeben, da ansonsten
versucht wird, eine Wertzuweisung vorzunehmen, diese aber aufgrund der fehlenden linken Variable scheitert.
<%
strText = "Ihr Text"
strUser = "Ihr Name"
= strText ' --- Dies führt zu einem ASP-Fehler
Response.Write strText ' --- Diese Schreibweise ist korrekt
%>
Im nächsten Beispiel suchen wir alle Kunden, deren PLZ 55555 ist. Die Postleitzahl übergeben wir als Teil
eines Formularergebnisses per GET gesendet. Dann sieht unser SQL-String folgendermaßen aus:
SQL = "Select * from [Kunden] where [KundenPLZ] = " & Request.QueryString("KundenPLZ") ";
Um nicht für alle Kunden, die evtl. im PLZ-Gebiet 55555 wohnen, diese 3 Zeilen extra schreiben müssen,
legen wir eine Schleife um den Quellcode, der diese Arbeit übernimmt und automatisch nach erfolgter
Ausgabe zum nächsten Datensatz übergeht.
<%
rs.MoveFirst ' --- Gehe zum ersten Datensatz in der Gruppe
do while Not rs.eof ' --- Wiederhole folgende Angaben bis zum letzten Datensatz
%>
Kundennummer <% Response.Write rs.Fields("Kundennummer") %>
KundenPLZ <% Response.Write rs.Fields("KundenPLZ") %>
KundenOrt <% Response.Write rs.Fields("KundenName") %>
<%
rs.MoveNext ' --- Gehe zum nächsten Datensatz
loop ' --- Führe die Schleife erneut aus
%>
Dies bewirkt unter der Voraussetzung, daß diese Angaben in der Tabelle Artikelstamm
stehen, folgende Ausgabe:
Kundennummer: 123456
KundenPLZ: 55555
KundenName: Kühlkost AG
Kundennummer: 789123
KundenPLZ: 55555
KundenName: Meiertest GmbH
Kundennummer: 456789
KundenPLZ: 55555
KundenName: Fa. Testmeier
Ändern
Der nächste Schritt ist nun das Ändern von Daten. Denn was nützt die schönste Datenbank, wenn man keine
Änderungen in Ihr durchführen könnte.
Wir nehmen das obige Beispiel, in dem wir einen Kunden mit der Kundennummer 789123 gesucht haben.
Wir wollen die Telefonnummer, sowie die E-Mailadresse ändern, da der Kunde nun einen ISDN-Anschluß
und einen E-Mailaccount hat.
Zu diesem Zweck haben wir ein Formular mit dem Namen "KundAkt" eingerichtet, daß folgenden Aufbau hat:
Wir geben in dieses Formular die Kundennummer und die neue Telefonnummer sowie die neue E-Mailadresse ein.
Als Methode geben wir diesmal "POST" an.
Der SQL-String für die Verarbeitung lautet:
SQL = "Select * from [Kunden] Where [Kundennummer] = " & Request.Form("Kundennummer")
Die Aktualisierung der Kundendaten wird durch folgenden Quellcode durchgeführt:
<%
if rs.Supports (adUpdate) Then ' --- Überprüfen, ob sich der Datensatz aktualisieren läßt
rs.Fields("KundenTelefon") = Request.Form("KundenTelefon") ' --- Zuweisung des neuen Werts
rs.Fields("KundenEMail") = Request.Form("KundenEMail") ' --- Zuweisung des neuen Preis
rs.Update ' --- Aktualisieren des Datensatzes
Else
Response.Write("<h2>Es ist ein Fehler aufgetreten !</h2>") ' --- Bei Fehler erfolgt eine Meldung
End if
%>
Hinzufügen
Nun folgt das Hinzufügen von Datensätzen
Zu diesem Zweck haben wir wieder ein Formular mit dem Namen "KundenPlus"
eingerichtet, daß folgenden Aufbau hat:
Wir geben in dieses Formular die neue Kundennummer, den Namen, die Telefonnummer sowie die EMailadresse ein.
Als Methode geben wir auch diesmal "POST" an.
Der SQL-String für die Verarbeitung lautet:
SQL = "Select * from [Kunden] Where [Kundennumer] = " & Request.Form("Kundennummer")
Auf den ersten Blick erscheint dies für Sie wahrscheinlich unsinnig, da hier versucht wird, einen Datnsatz
zu filtern, aber diese Abfrage dient nur zur Feststellung, ob diese Kundennummer evtl. schon existiert.
Da eine Kundennummer eindeutig sein sollte, wäre bei einem gefundenen Datensatz eine Fehlermeldung auszugeben.
Um nun abzufragen, ob die Kundennummer gefunden wurde, prüft man, ob die Datensatzgruppe einen Datensatz enthält.
<%
if rs.BOF AND rs.EOF Then ' --- Ist schon ein Datensatz vorhanden ?
Response.Write("Kundennummer frei, neuer Datensatz wird angelegt !")
if rs.Supports (adUpdate + adAddNew) Then ' --- Überprüfen, ob die Datenbank diese Operation zuläßt
rs.AddNew ' --- Anlegen eines neuen Datensatzes
rs.Fields("Kundennummer") = Request.Form("Kundennummer") ' --- Zuweisung der Kundennummer
rs.Fields("KundenName") = Request.Form("KundenName") ' --- Zuweisung der EMailadresse
rs.Fields("KundenTelefon") = Request.Form("KundenTelefon") ' --- Zuweisung des Telefonnummer
rs.Fields("KundenEMail") = Request.Form("KundenEMail") ' --- Zuweisung des EMailadresse
rs.Update ' --- Aktualisieren des angelegten Datensatzes
Else
Response.Write("Keine Aktualisierung möglich !") ' --- Bei Fehler erfolgt eine Meldung
End if
Else ' --- Es wurde ein Datensatz gefunden
Response.Write("Kundennummer bereits vorhanden !") ' --- Fehler Kundennummer
End if
%>
Löschen
Im letzten Abschnitt üben wir das "wahllose" ;-) Löschen von Datensätzen.
Zu diesem Zweck haben wir wieder ein Formular mit dem Namen "KundenDel" eingerichtet, daß folgenden Aufbau hat:
Wir geben in dieses Formular die Kundennummer des zu löschenden Kunden ein.
Als Methode geben wir diesmal "GET" an.
Der SQL-String für die Verarbeitung lautet:
SQL = "Select * from [Kunden] Where [Kundennummer] = " & Request.QueryString("Kundennummer")
Im Gegensatz zu allen anderen Operationen ist das Löschen eines Datensatzes geradezu ein Kinderspiel.
Man sollte vor einer so gravierenden Änderung noch eine Abfrage einbinden, ob dieser Kunde wirklich
gelöscht werden soll, aber das ist Aufgabe des Programmierers.
<%
rs.delete ' --- Löschen des Datensatzes
%>
© 1998 - 2001 by Stefan Falz Webconsulting
Für Schäden oder Beeinträchtigungen jedwelcher Art durch Benutzung der Skripte wird keinerlei Haftung übernommen !