ASP verfügt über eine der wichtigsten Funktionen: Es ermöglicht Ihnen eine sehr einfache Verbindung zur Datenbank. Normalerweise ist es mit einer Access- oder einer SQL-Datenbank verbunden. Da der Einstieg mit Access am einfachsten ist und Access möglicherweise bereits auf Ihrem Computer installiert ist, verwenden wir Access in den folgenden Beispielen. Sobald Sie die wichtigsten technischen Methoden zum Verbinden von ASP- und Access-Datenbanken kennengelernt haben und mit der Verwendung von SQL Server beginnen, werden Sie feststellen, dass die für beide erforderlichen Schlüsseltechnologien grundsätzlich dieselben sind.
Erstellen Sie einen Datenquellennamen (DSN).
Sie können Ihre Datenbank für die Verwendung in ASP verfügbar machen, indem Sie im Control Panel einen System-DSN für Ihre Datenbank erstellen. Sie können auf Ihrem lokalen Computer mehrere DSNs erstellen, wobei jeder DSN einer anderen von Ihnen verwendeten Datenbank entspricht. Nachdem Sie den DSN eingerichtet haben, können Sie Ihre Seite auf Ihrem lokalen Server testen. Wenn Ihre Website
von einem ISP bereitgestellt wird und der ISP ASP unterstützt, ist es sehr wahrscheinlich, dass er eine GUI-Schnittstelle zum Erstellen eines DSN für Ihre Datenbank bereitstellt.
Öffnen Sie unter Windows 95/98/NT die Systemsteuerung (Startmenü -> Einstellungen -> Systemsteuerung) und doppelklicken Sie zum Aufrufen auf ODBC.
Wählen Sie den System-DSN aus und klicken Sie auf Hinzufügen.
Wählen Sie „Microsoft Access-Treiber“ und klicken Sie auf „Fertig stellen“.
Geben Sie den Namen der Datenquelle ein. Dies ist der Name, den Sie Ihrer Datenbank geben. Es handelt sich also um denselben Vorgang wie bei einem Alias.
Klicken Sie in der Datenbankauswahl auf die Schaltfläche „Auswählen“, um den Speicherort im System zu durchsuchen, an dem die von Ihnen erstellte Access-Datenbank gespeichert ist.
Klicken Sie auf OK
Der neue DSN wird nun im System-DSN angezeigt und ist auf Ihrem lokalen Server verfügbar.
Herstellen einer Verbindung zur Datenbank Lassen Sie uns eine DSN-lose Verbindung einrichten und sehen, wie Sie eine Verbindung zur Datenbank herstellen. Wenn Sie einen DSN erstellen, speichern Sie bereits einige Informationen über die Datenbank, sodass Sie diese nicht jedes Mal wiederholen müssen, wenn Sie Informationen wie Datenbanktyp, Name, Speicherort und optionale Eigenschaften, Benutzer und Passwörter benötigen.
Um eine DSN-lose Verbindung herzustellen, müssen Sie dieselben Informationen angeben. Das folgende Beispiel zeigt, wie eine DSN-lose Verbindung zu einer Datenbank namens „products“ hergestellt wird:
<%
StrConnect = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:dbproducts.mdb"
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.OpenStrConnect
%>
Die zweite Zeile definiert den Treiber und den physischen Pfad der Datenbank. Um eine DSN-lose Verbindung nutzen zu können, müssen Sie den tatsächlichen Dateispeicherort (absoluten Pfad) kennen. Server.MapPath bietet eine einfache Arbeitsumgebung für alle, die Hosting-Dienste nutzen, um schwer zu findende tatsächliche Zugriffspfade zu finden.
Wenn wir einen System-DSN mit dem Namen „Produkte“ erstellt haben, sollte der Verbindungscode lauten:
<%
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Öffnen Sie „Produkte“
%>
Was können Sie tun, nachdem die Datenbank geöffnet ist? Der erste Schritt besteht natürlich darin, eine Reihe von Datensätzen in der Datenbank zu lesen und sie in Ihre Seite einzufügen. Zuvor benötigen Sie jedoch ein Recordset.
Datensatzsatz
Ein Recordset besteht aus allen Informationen, die in einer speziellen Datenbanktabelle gespeichert sind. Wenn Sie dieses Recordset öffnen, ist daher der Inhalt aller Zeilen und Spalten in der Tabelle zugänglich. Sie müssen dieses Datensatzset genauso öffnen, wie Sie die Datenbankverbindung öffnen müssen. Ihre Befehle sind ähnlich:
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open „downloadable“, strConnect, 0,1,2
erstellt ein Recordset (objRec) mit dem Namen „downloadable table“, das in strConnect in der Produktdatenbank definiert ist. Mit Recordset open können wir diese Tabelle durchlaufen und ihren gesamten Inhalt auf dem Bildschirm anzeigen. Alternativ können wir den Inhalt bestimmter Felder testen oder einfach auf den Bildschirm schreiben, was uns interessiert.
Jede Spalte stellt ein Feld dar. Wenn die Datenbanktabelle also wie folgt aussieht:
Produkt-ID | SKU | -Name | Datei |
1 | PR12345 | Produkt A | install_a.exe |
2 | PR12346 | Produkt B | Install_b.exe |
Dann haben wir den Inhalt der folgenden Felder: ProductID, SKU, Name und File. Ihre Tabelle wird höchstwahrscheinlich viele zusätzliche Felder enthalten, die viele Dinge enthalten können, wie zum Beispiel den Preis oder die Beschreibung des Produkts (Artikels). Dieses schematische Diagramm kann Ihnen jedoch das grundlegendste Konzept von Datenbanktabellen vermitteln.
Das Ausfüllen des Inhalts eines Recordsets ist mit Recordset sehr einfach. Wenn Sie die Datenbank durchlaufen und alle Informationen auf dem Bildschirm ausgeben möchten, können Sie Folgendes tun:
Während NOT objRec.EOF
' sagt, dass wir dies tun sollen, solange wir noch nicht das Ende der Datei erreicht haben
Response.WriteobjRec("ProductID") & ", "
Response.WriteobjRec("SKU") & ", "
Response.WriteobjRec("Name") & ", "
Response.WriteobjRec("File") & "<BR>"
objRec.MoveNext
Wend;
Selbst wenn Sie keine Schleifen auf diese Weise verwendet haben, können Sie diesen Code dennoch lesen, um Informationen in durch Kommas getrennte Zeichenfolgen zu schreiben, und wenn eine neue Zeile in der Datenbanktabelle erstellt wird, eine neue Zeile erstellen, um diese Zeile in der Tabelle aufzuzeichnen. Mit derselben Methode können Sie Daten in eine HTML-Tabelle schreiben. Wenn Sie Response.Write zum Hinzufügen Ihrer TABLE-Tags verwenden, müssen Sie einige Dinge beachten:
Ihre HTML-Tags und den Inhalt in Anführungszeichen.
Wenn Ihre Tags oder Inhalte Anführungszeichen verwenden, achten Sie darauf, doppelte Anführungszeichen zu verwenden:
<FONT SIZE=""+2"">.
Verwenden Sie &, um Variablen und HTML-/Inhaltsinformationen zu verbinden, um Felder im Recordset auszuwählen. Nehmen Sie an, dass unsere Produktdatenbank auch ein Feld namens „OS“ enthält. Nehmen wir erneut an, dass die in diesem Feld gespeicherten Daten nur die folgenden sein können: Windows NT, Windows 95, Windows 98, Windows, Mac, Unix oder Linux.
Als nächstes können wir bestätigen, welche Felder wir auf dem Bildschirm drucken müssen und welche Felder wir ignorieren möchten. Alternativ können wir auswählen, welche Felder ein Format verwenden und andere Felder ein anderes Format verwenden, beispielsweise unterschiedliche Farben verwenden.
Die Verwendung einer einfachen If...-Schleife kann uns mehr Kontrolle über die Datenbank geben. Lassen Sie uns zunächst Aufzeichnungen über Windows NT-Produkte drucken:
<TABLE BORDER=0 WIDTH=600>
<TR><TD COLSPAN=4 ALIGN=CENTER><FONT SIZE="+1"<<B>Windows NT-Produkte</B></FONT></TD></ TR>
<%
While NOT objRec.EOF
If objRec("OS") = "Windows NT" THEN ' gibt die Kriterien
an Response.Write "<TR><TD BGCOLOR=""#FFFF66"">" & objRec("ProductID") & " </TD>"
Response.Write „<TD>“ & objRec(“SKU“) & „</TD>“
Response.Write „<TD>“ & objRec(“Name“) & „</TD>“
Response.Write „<TD>“ & objRec(“File“) & „</TD></TR>“
end if
objRec.MoveNext
Wend
%>
</TABLE>
Hinzufügen eines Datensatzes Sobald Sie mit der Verwendung von Recordsets und ASP beginnen, möchten Sie wirklich in der Lage sein, Daten über das Netzwerk zur Datenbank hinzuzufügen. Das Hinzufügen von Inhalten ist beispielsweise dann wichtig, wenn Sie möchten, dass Ihre Webbesucher ihre Ansichten und Meinungen hinterlassen, oder wenn Sie administrative Aktualisierungen durchführen möchten.
Der folgende Code öffnet ein Recordset, das sich auf eine Datenbanktabelle mit den Namen von Büchern und ihren Autoren bezieht. Sie haben das wahrscheinlich schon einmal gesehen, aber dieses Mal definieren die letzten drei Spezifikationen unterschiedliche Zeigertypen: adOpenStatic, adLockOptimistic, adCmdTable:
<% ' Datenbankverbindung wurde hier nicht angezeigt
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open „books“, bookdb, adOpenStatic, adLockOptimistic, adCmdTable
%>
(Wenn Sie nicht die Kopierdatei von adovbs.inc verwenden, sollte die dritte Zeile lauten: objRec.Open „books“, bookdb, 3,3,2.
Das Recordset ist jetzt bereit, Daten zu empfangen, Sie brauchen nur um ihm zu sagen, was hinzugefügt werden soll. Nehmen wir in diesem Fall an, wir nehmen die Variablen aus der Tabelle: strBookTitle und strBookAuthor. Unsere Tabelle „books“ verfügt über zwei Felder namens „Titel“ und „Autor“, sodass wir mit der folgenden Anweisung einen neuen Datensatz hinzufügen können:
<%
objRec.AddNew
ObjRec("Title") = strBookTitle
objRec("Author") = strBookAuthor
objRec.Update
%>
strBookTitle und strBookAuthor stellen Werte dar und werden normalerweise von Benutzern aufgerufen. Wenn Sie die Funktion „Hinzufügen“ nur testen möchten, können Sie eine Variable für Titel und Autor hinzufügen – denken Sie jedoch daran, Anführungszeichen zu verwenden. Wenn Sie es zum ersten Mal verwenden, werden Sie wahrscheinlich sofort Ihre Datenbank öffnen, um sicherzustellen, dass Aktualisierungen durchgeführt werden.
Recordset-Typ Im gezeigten objRec.Open-Beispiel finden Sie am Ende die Wörter 0, 1 und 2. Diese Zahlen repräsentieren unterschiedliche Zeigertypen. Der Typ, den Sie verwenden, hängt davon ab, wofür Sie ihn verwenden möchten. Wenn Sie beispielsweise keine Datensätze ändern oder hinzufügen müssen, können Sie einen Sperrtyp verwenden. Wenn Sie planen, die Datenbank zu ändern oder zu aktualisieren, wählen Sie einen anderen Typ.
0,1,2 steht tatsächlich für:
adOpenForwardOnly, adLockReadOnly, adCmdTable.
Wenn Sie bereits ein Backup von adovbs.inc auf Ihrem Server haben, können Sie diese Wörter natürlich auch direkt verwenden, ohne Zahlen zu verwenden. adovbs.inc enthält diese drei Konstanten und eine Liste weiterer Konstanten.