Language: Deutsch English















Last Update: 2017 - 03 - 20





ASP

Inhalt

  • Kurze Einführung
  • Verbindung zu einer MS-Access Datenbank
  • Mit Daten in einer DB arbeiten
  • Autowert eines neuen Datensatzes ermitteln



  • Kurze Einführung

    Active Server Pages sind Webdocumente mit eingebetteten Scripten, die bei Aufrufen des Dokuments auf dem Webserver ausgeführt werden.

    Neben genrellen Vorteilen von serverseitiger Ausführung, wie geringere Netzlast und i.d.R. schnellerer Ausführung haben Active Server Pages auch den Vorteil, daß nur HTML-Code an den Browser gesendet wird und damit die Fähigkeiten und Einstellungen des Browsers in diesem Zusammenhang völlig unerheblich sind.

    Gegenüber klassichen CGI-Modulen in Perl oder C++ haben Active Server Pages einen wesentlichen Vorteil. Das ISAPI-Modul das die ASPs verarbeitet läuft innerhalb des Webserver-Prozesses,alle ASP-Scripte laufen als Threads innerhalb dieses Prozesses, also muß nicht für jede Anfrage ein separater Prozess (bei Perl zusätzlich der Interpreter) gestartet werden.

    Sowohl VBScript, als auch Jscript (Microsofts Javascript-Derivat) können in Active Server Pages als Sprache verwendet werden. Es können auch zusätzlich Module für weitere Scriptsprachen wie z.B. Perl auf dem Webserver installiert werden.

    Die VBScript (bzw. Jscript) Befehle können direkt in den HTML-Code eingefügt werden und werden mit <% und %> eingeschlossen.

    Neben all diesen Vorteilen haben ASPs natürlich einen gravierenden Nachteil. Sie laufen derzeit nur auf dem Microsoft Internet Information Server (IIS) und auf dessen kleinem Bruder, dem Personal Webserver (PWS, ab Version 4.0).

    Inzwischen gibt es auch ASP Module für den Apache Webserver. Da dort ständig neue Entwicklungen vorgestelllt werden, informiert euch dazu am besten direkt auf der Website der Apache Software Foundation.



    Zurück zur Übersicht

    Verbindung zu einer MS-Access Datenbank

    Über eine ODBC-Datenquelle

    Für diese Methode muss auf dem Server eine ODBC-Datenquelle angelegt werden, die auf die Access Datenbank zeigt. Dafür emfiehlt es sich eine System-DSN zu verwenden, da diese allen Usern auf dem Rechner zur Verfügung steht und besonders bei vielen gleichzeitigen Zugriffen wesemtlich schneller ist als eine File-DSN.

    <%@ LANGUAGE = VBScript %>
    <%
    Dim dbConnection
    Set dbConnection = Server.CreateObject("ADODB.Connection")
    dbConnection.Open "DSN=NameDerDatenquelle;UID=Benutzername;PWD=Passwort" %>

    Mit einer DSN-losen Verbindung

    Dieser Weg ist, entgegen den Performance-Tuning-Tips aus dem MSDN, schneller als eine System-DSN, da der Treiber direkt angesprochen wird und damit Registry-Zugriffe entfallen. Dieser Geschwindigkeitsvorteil macht sich allerdings erst bei 10 oder mehr gleichzeitigen Zugriffen bemerkbar.

    <%@ LANGUAGE = VBScript %>
    <%
    Dim dbConnection
    Dim dbPfad
    dbPfad = "C:\Pfad\zur\Datenbank.mdb"
    Set dbConnection = Server.CreateObject("ADODB.Connection")
    dbConnection.Open "DBQ="& dbPfad & _ 
       ";Driver={Microsoft Access Driver (*.mdb)};"
    %>

    Da der physikalische Pfad zur DB auf den Servern von Webhostern selten bekannt ist und u.U. ohne Vorwarnung geändert wird, ist es sinvoller statt einer absoluten Pfadangabe in der ASP die MapPath Methode des Server-Objektes zu verwenden. Der Methode wird ein virtueller Pfad übergeben.

    dbPfad = Server.MapPath("/zur/Datenbank.mdb")
    

    Achtung, MapPath unterstützt keine relativen Pfadangaben.



    Zurück zur Übersicht

    Mit Daten in einer DB arbeiten

    Mit SQL-Statements

    Über das geöffnete Connection-Objekt kann man SQL-Statements ausführen lassen.

    Für eine Aktualisierungs- oder Anfügeabfrage reicht es aus mit der Execute-Methode das Statement ausführen zu lassen.

    <%
    dbConnection.Execute(InsertOderUpdate-Statement)
    %>

    Wenn man Daten aus der DB anzeigen oder weiterverarbeiten möchte, muss man das Ergebnis einer (Recordset)-Variablen zuweisen.

    <%
    Dim rs
    Set rs = dbConnection.Execute(Select-Statement)
    %>
    
    Neue Daten an ein Recordset anfügen oder bestehende editieren

    Wenn man ein ADO-Recordset erstellt, ist es per Default readonly, das heißt die Daten können nicht verändert werden und in der Datenbank aktualisiert werden.

    In dem folgenden Beispiel wird ein aktualisierbares Recordset rs geöffnet und ein neuer Datensatz angelegt.

    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open SQLStatement,dbConnection,adOpenDynamic,adLockOptimistic
    rs.Addnew
    rs("einZahlenFeld") = 9999
    rs("einTextFeld") = "Neuer Eintrag"
    rs.update
    

    Um bestehende Daten zu editieren, einfach das

    rs.AddNew

    weglassen. Ein

    rs.Edit

    wie bei DAO-Recordsets ist nicht erforderlich.

    Die ADO Konstanten (im Bsp.: adOpenDynamic und adLockOptimistic) kann man nur verwenden, wenn man die Konstantendeklarationsdatei "adovbs.inc" über

    <!--#include file="adovbs.inc"-->
    

    am Anfang des ASP-Scriptes einbindet.



    Zurück zur Übersicht

    Autowert eines neuen Datensatzes ermitteln

    Oft benötigt man den Wert eines Autowert-Feldes eines Datensatzes, den man gerade neu angelegt hat. Wenn man den neuen Datensatz in ein Recordset eingefügt hat, kann man diesen Wert mit Hilfe der Bookmark-Eigenschaft des Recordsets ermitteln.

    Der neue Datensatz wird mit Update gespeichert und nach einem Requery des Recordsets wird mit Hilfe des Bookmarks zu dem eingefügten Datensatz gesprungen und der neue Autowert ausgelesen. Wichtig ist hierfür, dass man die CursorLocation auf Client setzt, da sonst das Bookmarken nicht funktioniert.

    Dim vBookmark
    Dim rs
    Dim neuerAutoWert
    
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.CursorLocation = adUseClient
    
    rs.Open einSQLSelectStatement, eineADOConnection, adOpenDynamic, adLockOptimistic
    rs.addnew
    rs("einTextfeld") = "Irgendein Text"
    rs("einDatumsfeld") = Now
    vBookmark = rs.Bookmark
    rs.Update
    rs.requery
    rs.bookmark = vBookmark
    neuerAutoWert = rs("autoWertFeld")
    rs.Close
    


    Zurück zur Übersicht

    Abonniere meinen Newsletter

    *

    Ich werde Deine Email-Addresse niemals weitergeben. Du kannst den Newsletter jederzeit abbestellen.



    © 1999 - 2016 by Philipp Stiefel