datenbankanbindung mit asp von thomas ohlhauser wilhelm-schickard-schule tübingen

33
Datenbankanbindung mit ASP von Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Upload: jamil

Post on 21-Jan-2016

36 views

Category:

Documents


0 download

DESCRIPTION

Datenbankanbindung mit ASP von Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen. Inhalt. Basiswissen Dynamische Webseiten mit ASP Voraussetzungen Zugriff auf eine ACCESS-Datenbank über ADO Abfragen mit SQL. HTML ohne ASP. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Datenbankanbindung mit ASP

von

Thomas OhlhauserWilhelm-Schickard-Schule Tübingen

Page 2: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Inhalt

Basiswissen Dynamische Webseiten mit ASP Voraussetzungen Zugriff auf eine ACCESS-Datenbank über ADO Abfragen mit SQL

Page 3: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

HTML ohne ASP

Der Browser nimmt die URL in der Adressleiste entgegen und leitet sie in Form einer http-Anfrage an den Webserver weiter. Dabei sprechen beide die Sprache "http"!

Der Server stellt die gewünschte Information zusammen und leitet sie wieder auf "http-ianisch" an den Browser zurück.

Page 4: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

HTML mit ASP Die Anfrage geht nicht an eine statische Datei. Es wird vielmehr über den Webserver ein Programm aufgerufen. Dieses erzeugt dynamisch Daten (z.B. HTML). Die "frisch" erzeugten Daten gehen über den Webserver an den

Anfragenden zurück.

Page 5: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Dynamische Webseiten mit ASP

Beispiel: beispiel1.asp

<html><head><title>Mein erstes ASP-Skript</title></head><body><h1>Hallo Welt</h1><br>Auf meiner Homepage ist es <%=Now()%><br><br><%Response.Write "Ich glaube es wird Zeit eine Pause zu machen!"%></body></html>

Page 6: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Dynamische Webseiten mit ASP

Die folgende Grafik zeigt die Wirkung des ASP-Skripts:

Erläuterung:Mit den Tags <% .....%> wird dem Server signalisiert, dass sich hier der ASP-Code befindet, der verarbeitet werden muss. Der Befehl now() bedeutet, dass jedes Mal, wenn man diese Seite aufruft, das Datum und die Uhrzeit vom Server erneut gelesen und angezeigt wird. Der Befehl Response.Write wird verwendet, um einen Wert auszugeben.

Page 7: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Webserver

PWS (Personal Web Server). Er ist im Lieferumfang von Windows 9x enthalten und kann bei der Installation aktiviert oder später nachinstalliert werden (Systemsteuerung / Software).

IIS (Internet Information Server). Er ist im Lieferumfang von Windows NT/2000 enthalten und wird bei der Installation als Dienst eingerichtet. Zum Konfigurieren des IIS stehen in der Systemsteuerung unter Verwaltung Tools zur Verfügung.

C:\Inetpub\wwwroot (Standardordner für die Webdateien).

http://<Computername> Localhost ist die Bezeichnung (Computername) für den eigenen Rechner.

default.asp (Standardmäßige Startseite).

Page 8: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

C:\Inetpub\wwwroot

Beispiel: default.asp

<html><head><title>Zweites ASP-Script</title></head><body><h1>Hallo Welt</h1><br><%Response.Write "Dies ist die Startseite (default.asp) meiner Homepage!" & "<br>"Response.Write "Sie liegt in dem Verzeichnis C:\Inetpub\wwwroot!" & "<br>"Response.Write "Ich benutze den Internet Information Server (IIS)!" & "<br>"%></body></html>

Page 9: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

IIS

Page 10: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Drittes ASP-Skript

Beispiel: beispiel3.asp

<html><head><title>Drittes ASP-Skript</title></head><body><h1>Der grosse Rechner</h1><br><%a=1b=3summe=a+b%>a+b= <% =summe %></body></html>

Page 11: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Viertes ASP-SkriptBeispiel: beispiel4.asp

Ändere das Programm so das positive Werte in blau und negative Werte in rot ausgegeben werden.

<html><head><title>Viertes ASP-Skript</title></head><body><% a=1b=-3summe=a+b%>a+b= <% if summe>0 then %> <font color=#0000ff> <% else %><font color=#ff0000> <% end if %><% =summe %> </body></html>

Page 12: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

VariablendeklarationBeispiel: beispiel5.asp

<html><body><%dim namename="Thomas Ohlhauser"response.write("My name is: " & name)%></body></html>

Page 13: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Variablendeklaration

Beispiel: beispiel6.asp

<html><body><%dim hh=Now()response.write(h)response.write(" (Schickard Zeit) </p>")If h<12 then response.write("Guten Morgen!")else response.write("Einen schönen Tag noch!")end if%></body></html>

Page 14: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Formulare

Beispiel: beispiel7.html

<html><body><form method=“post" action="formular.asp">Vorname: <input type="text" name="fname"><br />Nachname: <input type="text" name="lname"><br /><br /><input type="submit" value="Submit"></form></body></html>

Page 15: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Formulare

Beispiel: beispiel7.asp

<html><body>Welcome

<%response.write(request.form("fname"))response.write(" " & request.form("lname"))%>

</body></html>

Page 16: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Passwortabfrage

Beispiel: beispiel8.html

<html><head><title>Login</title><body><form action="beispiel8.asp" method="POST">Benutzername: <input type="Text" name="Benutzername" size="20" maxlength="20"> <br>Passwort: <input type="Password" name="Passwort" size="20" maxlength="20"> <br><input type="Submit" name="Absenden" value="Einloggen"></form></body></html>

Page 17: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Passwortabfrage

Beispiel: beispiel8.asp

<%user = Request.Form("Benutzername") pass = Request.Form("Passwort")

if user = "test" and pass = "demo" thenResponse.Redirect "http://localhost/tom/intranet.html"

else Response.Redirect "http://localhost/tom/pech.html"

end if %>

Page 18: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Verbindung mit der DatenbankBeispiel: dbzugriff.asp

<html><head></head><body><%'Pfad und Dateiname der DatenbankstrDB = "Data Source=" & _Server.MapPath("haro.mdb")

'Parameter zum Öffner der DatenbankstrCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB

'Objekt für den Verbindungsaufbau mit der DatenbankSet ConDB = Server.CreateObject("ADODB.Connection")ConDB.Open strConResponse.Write "Verbindung zur Datenbank geöffnet.<br><br>"

'Verbindungsobjekt schließenConDB.closeResponse.Write "Verbindung zur Datenbank geschlossen.<br>"%><hr></body></html>

Page 19: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Verbindung mit der Datenbank

Die folgende Grafik zeigt die Wirkung des ASP-Skripts:

Erläuterung: ASP ist eine Sammlung von mehreren vordefinierten Objekten, Request, Response, Application, Session, Server, ADODB.Connection (Schnittstelle, die den Zugriff auf Datenbanken erleichtert), Methode Open (Verbindung zur Datenbank herstellen),, Methode Close beendet die Verbindung zur Datenbank.

Page 20: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Datenbankanbindung mit ADO

Beispiel: dbzugriff1.asp

<html><head></head><body><%'Pfad und Dateiname der DatenbankstrDB = "Data Source=" & _Server.MapPath("haro.mdb")

'Parameter zum Öffner der DatenbankstrCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB

'Name der Tabelle oder Abfrage, die geöffnet werden sollstrTabelle= "Teile"

'Objekt für den Verbindungsaufbau mit der DatenbankSet ConDB = Server.CreateObject("ADODB.Connection")ConDB.Open strConResponse.Write "Verbindung zur Datenbank geöffnet.<br>„

'Objekt für das Recordset-ObjektSet RS = Server.CreateObject("ADODB.Recordset")Rs.open strTabelle, ConDBResponse.Write "Leistungstabelle geöffnet.<br>"

Page 21: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Datenbankanbindung mit ADO'Befehle zur Bearbeitung der DatenResponse.Write "<HR>„

'Geht zum ersten DatensatzRs.MoveFirst

'Liest bis das Ende der Daten erreicht istDo While Not Rs.EOFResponse.Write Rs("TeileNr") & " , "Response.Write Rs("Bez") & " , "Response.Write Rs("LagerNr") & " , "Response.Write Rs("VKPreis") & " , "Response.Write Rs("Bestand") & " "Response.Write "<br><hr>"Rs.MoveNextLoop

'Verbindungsobjekt schließenConDB.closeResponse.Write "Verbindung geschlossen.<br>"%><hr></body></html>

Page 22: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Erklärung:Öffnen der Datenbank über die Variable strCon,Parameter Provider definiert den Treiber,Data Source bestimmt den Pfad und Dateinamen der ACCESS-Datenbank (Variable strDB),

strDB = "Data Source=" & _Server.MapPath(“haro.mdb")strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB

“Provider=Microsoft.Jet.OLEDB.4.0;“ – Treiber für ACCESS 97 und ACCESS 2000,Rs.open strTabelle, ConDB

Recordset wird geöffnet, empfängt die Daten der Tabelle „Leistung“ (strTabelle = “Teile“), Verbindungsparameter zur Datenbank.

Die Befehle zum Öffnen bzw. Schließen der Datenbank und der jeweiligen Tabelle mit der Methode Open bzw. Close.

Exkurs: Auf Excel-Daten zugreifen ....

strDB = "Data Source=" & _Server.MapPath(“tabelle.xls")strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Excel 8.0; " & strDB

Datenbankanbindung mit ADO ohne DSN

Page 23: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Tabellen auslesen ...Erklärung: Verbindung zur anzuzeigenden Tabelle (Leistung) öffnen, Zugriff auf die Tabellendaten und die Ergebnisse einer Access-Abfrage mit dem Recordset-

Objekt, Den Inhalt eines Datenbank-Feldes erhält man mit dem Befehl Recordset(„Feldname“), “MoveFirst“ bewegt den Satzzeiger auf den ersten Datensatz des Recordsets, “Do While Not Rs.EOF“ bedeutet, dass die Tabelle solange durchlaufen werden soll, bis sich der

Satzzeiger hinter dem letzten Datensatz der Tabelle befindet, Mit „Loop“ wird das Recordset beendet, “Rs.Close“ schließt die Tabelle und “ConDB.Close“ die Datenbank.

Page 24: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Abfragen mit SQLBeispiel: dbzugriff2.asp<html><head></head><body><%'Pfad und Dateiname der DatenbankstrDB = "Data Source=" & _Server.MapPath("haro.mdb") 'Parameter zum Öffnen der DatenbankstrCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB 'Name der Tabelle oder Abfrage, die geöffnet werden sollstrSQL = "Select TeileNr, Bez, LagerNr, VKPreis, Bestand From Teile Where LagerNr ='T1';" ’Objekt für den Verbindungsaufbau mit der DatenbankSet ConDB = Server.CreateObject("ADODB.Connection")ConDB.Open strConResponse.Write "Verbindung zur Datenbank geöffnet.<br>" 'Objekt für das Recordset-ObjektSet Rs = Server.CreateObject("ADODB.Recordset")Rs.open strSQL, ConDB 'Befehle zur Bearbeitung der DatenResponse.Write "<HR>"

Page 25: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Abfragen mit SQL 'Geht zum ersten DatensatzRs.MoveFirst  'Liest bis das Ende der Daten erreicht istWhile Not Rs.EOFResponse.Write Rs("TeileNr") & " , "Response.Write Rs("Bez") & " , "Response.Write Rs("LagerNr") & " , "Response.Write Rs("VKPreis") & " , "Response.Write Rs("Bestand") & " "Response.Write "<br><hr>"Rs.MoveNextWend 'Verbindungsobjekt schließenConDB.closeResponse.Write "Verbindung geschlossen.<br>"%><hr></body></html>

Page 26: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Abfragen mit SQL

Die folgende Grafik zeigt die Wirkung des ASP-Skripts:

Page 27: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Abfragen mit SQLErklärung: 

Die Grundstruktur einer SQL – Abfrage sieht wie folgt aus:Select AttributeFrom TabellenWhere Selektionskriterien;

Dabei sind nur die Select- und die From- Klausel zwingend. Alle SQL-Anweisungen sind mit einem Semikolon (;) abzuschliessen.

Beispiel: Es werden alle Teile gesucht, welche im Lagerort “T1“ eingelagert sind.

Select TeileNr, Bez, LagerNr, VKPreis, Bestand From Teile Where LagerNr=’T1’;

Im ASP-Skript werden die SQL-Befehle zur weiteren Verarbeitung in eine Variable gepackt. strSQL = "Select TeileNr, Bez, LagerNr, VKPreis, Bestand From Teile Where LagerNr

='T1';"

Für den Zugriff auf die Datenbank benötigt man die Befehle, die in den vorhergehenden Beispielen erläutert wurden. Da man statt der gesamten Leistungstabelle nur bestimmte Daten sehen möchte, wird lediglich der Parameter Leistungstabelle durch die SQL-Anweisung ausgetauscht.

Page 28: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

HTML-Formulare zur Datenbankabfrage

Für die Administration einer Datenbank ist es sinnvoll auf einer HTML-Seite Formularmasken zu erstellen, um folgende Aufgaben durchführen zu können: Suche nach bestimmten Datensätzen, Hinzufügen von Datensätzen, Löschen von Datensätzen, Anzeigen der gesamten Datenbank.

1. Einen Datensatz suchen“Das Formular besteht aus einem Eingabefeld (db_feld1) und einem Submit-Button, der die Suchanfrage an die Seite db_ergebnis.asp schickt.

<HTML><HEAD><TITLE>Einen Datensatz suchen</TITLE></HEAD><BODY><B>Nach welchen Teilen möchten Sie suchen ?</B><FORM METHOD=POST ACTION="db_ergebnis.asp"><INPUT TYPE="text" NAME="db_feld1" style="width:200px" size="20"><INPUT TYPE="submit" value="suchen" style="width:100px"></FORM></BODY> </HTML>

Page 29: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Ergebnis einer Datenbanksuche ausgebenBeispiel: db_ergebnis.asp<html><head></head><body><%'Speichern der im Request-Objekt übergebenen FormulardatenDim feld1feld1 = Request.Form("db_feld1") 'Pfad und Dateiname der DatenbankstrDB = "Data Source=" & _Server.MapPath("haro.mdb") 'Parameter zum Öffnen der DatenbankstrCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & strDB 'Name der Abfrage, die geöffnet werden sollstrSQL = "Select TeileNr, Bez, LagerNr, VKPreis, Bestand From Teile Where Bez LIKE '%" & feld1 & "%';" 'Objekt für den Verbindungsaufbau mit der DatenbankSet ConDB = Server.CreateObject("ADODB.Connection")ConDB.Open strConResponse.Write "Verbindung zur Datenbank geöffnet.<br>" 

Page 30: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Ergebnis einer Datenbanksuche ausgeben'Objekt für das Recordset-ObjektSet Rs = Server.CreateObject("ADODB.Recordset")Rs.open strSQL, ConDB If Rs.EOF = False ThenDo While Not Rs.EOFResponse.Write Rs("TeileNr") & " , "Response.Write Rs("Bez") & " , "Response.Write Rs("LagerNr") & " , "Response.Write Rs("VKPreis") & " , "Response.Write Rs("Bestand") & " "Response.Write "<br><hr>"Rs.MoveNextLoop ElseResponse.Write("<b>Leider keinen Eintrag gefunden!</b><br>")End If 'Verbindungsobjekt schließenConDB.close Response.Write "Verbindung geschlossen.<br>"%><hr></body></html>

Page 31: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Ergebnis einer Datenbanksuche ausgeben

Die folgende Grafik zeigt die Wirkung des ASP-Skripts:

Page 32: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Erklärung:Um die Programmierung übersichtlicher zu gestalten werden die im Request Objekt übergebenen Formulardaten zunächst in eine Variable gespeichert.Dim feld1feld1 = Request.Form("db_feld1") Danach wird die Verbindung zur Datenbank hergestellt und das Recordset-Objekt geöffnet. Mit der SQL-Abfrage Like ’%Kriterium%’ wird nach einem Teilstring innerhalb eines Feldes gesucht. Im Beispiel bezieht sich die Suche auf den Wochentag.strSQL = "Select TeileNr, Bez, LagerNr, VKPreis, Bestand From Teile Where Bez LIKE '%" & feld1 & "%';"

Nur wenn das Recordset Datensätze als Ergebnis der Abfrage enthält, wird die Datenbankoperation auch ausgeführt.If Rs.EOF = False ThenDo While Not Rs.EOF

Hat der User einen Begriff gesucht, der nicht in der Datenbank enthalten ist, wird eine Fehlermeldung ausgegeben.ElseResponse.Write("<b>Leider keinen Eintrag gefunden!</b>")End If Zum Schluss wird das Recordset und die Datenbankverbindung wieder geschlosssen.

Ergebnis einer Datenbanksuche ausgeben

Page 33: Datenbankanbindung mit ASP von  Thomas Ohlhauser Wilhelm-Schickard-Schule Tübingen

Gesamte Tabelle durchsuchen

Bezieht sich die Suche nicht nur auf die Teile, so ist der SQL-Befehl folgendermaßen zu ergänzen:

  strSQL = "Select TeileNr, Bez, LagerNr, VKPreis, BestandFrom Teile Where TeileNr & Bez & LagerNr & VKPreis & Bestand LIKE '%" & feld1 & "%';"