In diesem Artikel wird die von VB generierte DLL verwendet, um den ASP-Code für die Verbindung mit der Datenbank zu kapseln (am Beispiel der Access-Datenbank).
Wenn wir unter normalen Umständen ASP verwenden, um eine Verbindung zur Access-Datenbank herzustellen, führen wir normalerweise die folgenden Vorgänge aus:
'//Proconn.asp
<%
dimProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
„Eine Access-Datenbank, die ursprünglich DB.mdb war, wird in eine Datei mit dem Suffix DB.asp geändert, und das Datenbankkennwort lautet 123,
wenn err.Number <> 0 ist.“
ResPonse.Write „Es gibt keinen Link zur Datenbank, bitte überprüfen“
Antwort.Ende
anders
ResPonse.Write „Datenbankverbindung erfolgreich“
Antwort.Ende
Ende wenn
%>
Wenn der Server konfiguriert ist, greifen Sie auf Proconn.asp zu. Wenn die Datenbankverbindung erfolgreich ist, wird „Datenbankverbindung erfolgreich“ ausgegeben.
Allerdings ist die Sicherheitsstufe eines solchen ASP-Codes sehr niedrig. Wenn der ursprüngliche ASP von anderen gesehen wird und diese Datenbankdatei vorhanden ist, können andere Ihre Datenbank problemlos für Operationen öffnen.
Hier kommt nun unsere Aufgabe: Wie können wir diese Schlüsselinhalte zusammenfassen?
Zunächst müssen Sie die Methode, Methode und das Objekt bestimmen.
Nachdem wir einige Informationen im Internet überprüft haben, wird die Kapselung hauptsächlich durch die Verwendung von VB zum Generieren von DLLs durchgeführt. Daher sollten wir auch diese Methode anwenden (obwohl ich VB nicht wirklich verwendet habe)
, um festzustellen, welches Objekt es ist, das wir kapseln müssen ?
Kommen Sie und sehen Sie sich alle an
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Es handelt sich um den kritischsten Code. Es sollte besser sein, diesen Code in einer mit VB generierten DLL zu kapseln.
Der Grund, warum nicht das Ganze
dimProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
Alle sind gekapselt (da es im Internet Anweisungen zum Kapseln des gesamten Verbindungscodes gibt), denn wenn andere ASP-Dateien auf Proconn.asp verweisen,
Ich benötige auch den ProConn im Inneren, um andere Vorgänge auszuführen. Wenn er gekapselt ist, ist die Referenzierung und Bedienung umständlich.
(Die obige Erklärung des Kapselungsobjekts ist meine persönliche Meinung. Einige Freunde sagten, dass die Gesamtkapselung keinen Einfluss auf die Verwendung von ProConn hat. Ich verstehe das nicht. Bitte sagen Sie es mir, wenn Sie es wissen.)
Ich möchte nur den kritischsten Teil „driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")" zusammenfassen,
um diesen Absatz zu analysieren . den Inhalt des Pakets,
Die erste Hälfte davon ist eine Zeichenfolge:
"driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ="
Verwenden Sie &, um die zweite Hälfte einer anderen Zeichenfolge zu verketten.
Die andere Zeichenfolge in der zweiten Hälfte ist der Rückgabewert der Objektfunktion Server.MapPath.
Beginnen wir mit dem Kapselungsvorgang.
Erstellen Sie zunächst ein neues ActiveX-DLL-Projekt unter VB. Ändern Sie den Namen des Projekts Project1 in ConDBDLL? Ändern Sie den Namen der Methode class1 in cs
Beim Aufruf dieser DLL werden der Projektname und der Methodenname verwendet. Sie können diese gemäß Ihren eigenen Benennungsregeln definieren, achten Sie jedoch darauf, sie sorgfältig zu verwenden.
Der Codeteil dieser DLL ist wie folgt geschrieben:
Dim rp As Response
Dim rq As request
Dim ap als Anwendung
Dim sr als Server
Dim sn As Session
Public Sub OnStartPage(MyScriptingContext As ScriptingContext)
Setze rp = MyScriptingContext.Response
Setze rq = MyScriptingContext.Request
Setze sr = MyScriptingContext.Server
Setze ap = MyScriptingContext.Application
Setze sn = MyScriptingContext.Session
End Sub
Public Sub OnEndPage()
Setze rp = Nichts
Setze rq = Nichts
Setze sr = Nichts
Setze ap=Nothing
Setze sn=Nothing
Sub beenden
'Die obige Anweisung ist notwendig. Das ursprüngliche Objekt wurde vereinfacht und in zwei Grundfunktionen verarbeitet.
Öffentliche Funktion ConnectDB() As Variant
ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid =;pwd=123; DBQ="
Endfunktion
„Die obige Funktion verarbeitet die erste Hälfte der Zeichenfolge und gibt den Inhalt dieser Zeichenfolge direkt zurück
“ Definieren Sie außerdem die folgende Funktion, um die zweite Hälfte des Inhalts zu verarbeiten
Öffentliche Funktion DBPath() als Variante
DBPath = sr.MapPath("DB.asp")
Funktion beenden
„Beachten Sie, dass das oben genannte sr nicht als Server verwendet wird. Jetzt
haben wir den kritischen Schritt erreicht. Fügen Sie diesem Projekt die Referenz „Microsoft Active Server Pages ObjectContext“ hinzu.
Um eine Methode hinzuzufügen, wählen Sie im Menü „Projekt“ -> „Referenz“ und wählen Sie diese im geöffneten Dialogfeld aus.
Übrigens müssen wir auch „Microsoft ActiveX-Datenobjekte 2.6-Bibliothek“ auswählen,
um die oben genannten Vorgänge auszuführen. (Vergessen Sie nicht, den Projektnamen und den Methodennamen vorher zu ändern.)
Bereiten Sie die Datenbankdatei vor DB.asp (geschrieben von DB .mdb wird durch Ändern des Suffixes gebildet, das Passwort ist 123)
Das Folgende ist der Code zum Aufrufen der gekapselten ASP-Datei, die eine Verbindung zur Datenbank herstellt:
'//ProConn.asp
<%
dimProConn
set ProConn=Server.CreateObject("ADODB.CONNECTION")
DimConDB
set ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB ist das erstellte DLL-Objekt
Dim StrConn
'Definieren Sie eine Zeichenfolge
StrConn = ConDB.ConnectDB() & ConDB.DBPath()
'Verketten Sie die beiden Teile, um eine Zeichenfolge zu bilden
ProConn.OpenStrConn
'Datenbankobjektoperationen durchführen
%>
Da es sich um eine von Ihnen erstellte DLL handelt, muss diese nach dem Kopieren in das entsprechende Verzeichnis registriert werden, bevor sie verwendet werden kann.
Registrierte Methode, ausgeführt in „Run“:
Regsvr32.exe lyfUpload.dll
Die Methode zum Abbrechen der Registrierung dieser DLL lautet: Regsvr32.exe /u lyfUpload.dll
Nach Abschluss der Registrierung ist unsere Arbeit im Grunde genommen abgeschlossen. Jetzt können wir eine solche Kapselungsmethode verwenden, um eine Verbindung zu einem Ziel herzustellen Datenbank.
Es gibt jedoch eine Sache, die besondere Aufmerksamkeit erfordert:
Weil
DimConDB
set ConDB=Server.CreateObject("ConDBDLL.Conn")
„ConDB ist das erstellte DLL-Objekt, einschließlich ProConn. Dann denken wir daran, diese beiden Objekte in allen anderen ASP-Dateien freizugeben, die (Referenz) ProConn.asp verwenden.“
ProConn.schließen
setProConn=nichts
setConDB=Nichts
Andernfalls wird das System zunehmend überlastet, da Objekte nicht freigegeben werden.
Ich denke, dass diese Methode zum Einkapseln von ASP-Code für die Verbindung mit der Access-Datenbank vollständig auf die Verbindungsmethode anderer Datenbanken anwendbar ist.
Ich denke, meine Methode ist nicht die beste. Bitte korrigieren Sie mich, wenn Sie sie gelesen haben.