Für ASP-Benutzer gilt: Je einfacher der Datenbankbetrieb ist, desto mehr Zeit haben sie für die Betrachtung der Logik und des Anwendungscodes und die Effizienz ist höher.
Heute bin ich hier, um Ihnen einen Einblick in den Datenbankbetrieb zu geben. Ich habe auch viele Projekte damit abgeschlossen Problem bei der direkten Verwendung. Natürlich sind meine Fähigkeiten begrenzt, daher hoffe ich, dass alle gemeinsam darüber diskutieren können.
Hinweis: Bei den Codes in diesem Beitrag handelt es sich ausschließlich um VBScript-Versionen. Darüber hinaus ist es am besten, wenn Sie bereits über gewisse Grundlagen in der Handschrift ASP verfügen.
Lassen Sie mich zunächst kurz einige Funktionen meiner Klasse vorstellen:
Es können mehrere Datenbanken unterschiedlichen Typs gleichzeitig betrieben werden.
Es besteht überhaupt keine Notwendigkeit, den Unterschied in den Datentypen zu berücksichtigen, und es besteht keine Notwendigkeit darüber nachzudenken, ob einfache Anführungszeichen in Zeichenfelder eingefügt werden sollen.
Der Aufruf ist sehr einfach und die Hauptoperation in der Datenbank erfordert im Allgemeinen nur eine Codezeile.
Unterstützt das Rollback von MSSQL-Transaktionen.
SQL-Anweisungen können automatisch generiert und ausgegeben werden, um das Debuggen zu erleichtern.
Anwendung:
1. Ändern Sie die erste Zeile in der Datei clsDbctrl.asp in Ihren eigenen Datenbankspeicherort (Informationen zur Änderungsmethode finden Sie in der Beschreibung der CreatConn-Funktion weiter unten). Wenn Sie eine Verbindung zu mehreren Datenbanken herstellen müssen, können Sie diese selbst im gleichen Format hinzufügen.
2. Fügen Sie diese ASP-Datei in Ihre neue ASP-Datei ein. wie:
<!--#include file="Inc/clsDbctrl.asp" --> Oder:
<!--#include virtual="/Inc/clsDbctrl.asp"-->
3. Verwenden Sie den folgenden Code, um diese Klasse anzuwenden:
Eine Datenbankverbindung:
<%
OpenConn() 'Datenbankverbindung öffnen
Dim db: Set db = New DbCtrl 'Objekt erstellen
„Hier ist Ihr Code...“
Co(db): CloseConn() 'Das Objekt freigeben und die Datenbankverbindung schließen
%>
Oder (eine oder mehrere Datenbankverbindungen):
<%
Dim db1: Set db1 = New DbCtrl: db1.dbConn = Oc(a)
Dim db2: Set db2 = New DbCtrl: db2.dbConn = Oc(b)
„Hier ist Ihr Code...“
Co(db1) : Co(db2)
%>
4. Spezifische Betriebsbeispiele finden Sie in den Codebeispielen in jeder Funktionsbeschreibung.
Übersicht über Methoden und Eigenschaften (detaillierte Verwendung und Beispiele finden Sie unten):
Zitat:
CreateConn generiert eine Datenbankverbindungszeichenfolge
Oc stellt eine Datenbankverbindung her
Co-Release-Objekt
OpenConn öffnet die Standard-Datenbankverbindung
CloseConn schließt die Standarddatenbankverbindung
Die Eigenschaft dbCtrl.dbConn ruft die zu betreibende Datenbankverbindung ab. Der Standardwert ist Conn
Die schreibgeschützte Eigenschaft dbCtrl.dbErr gibt die erfasste Fehlermeldung aus
dbCtrl.Version-Eigenschaft, schreibgeschützt, Informationen zur Programmversion
Mit der dbCtrl.AutoId-Methode erhalten Sie automatisch die eindeutige Seriennummer
dbCtrl.GetRecord-Methode, um einen Datensatz zu erhalten, der die Bedingungen erfüllt
Die dbCtrl.GetRecordBySql-Methode ruft den Datensatz basierend auf der SQL-Anweisung ab
dbCtrl.GetRecordDetail-Methode, basierend auf den detaillierten Daten eines angegebenen Datensatzes
dbCtrl.AddRecord-Methode, fügen Sie einen neuen Datensatz hinzu
Die dbCtrl.UpdateRecord-Methode aktualisiert Datensätze gemäß den angegebenen Bedingungen
dbCtrl.DeleteRecord-Methode: Datensätze löschen, die die Bedingungen erfüllen
Die dbCtrl.ReadTable-Methode ruft den Inhalt anderer Felder in einem Datensatz basierend auf angegebenen Bedingungen ab.
dbCtrl.C-Methode, schließen Sie das Datensatzobjekt
dbCtrl.wGetRecord,
dbCtrl.wAddRecord,
dbCtrl.wUpdateRecord,
dbCtrl.wDeleteRecord Diese vier Methoden sind SQL-Anweisungen, die die entsprechenden Operationen abrufen (vorangestellt mit w).
Parameterkonvention:
Da ASP kein Arguments-Objekt hat und keine dynamischen Parameter verwenden kann, wird im Code dieser Klasse Array verwendet, um diesen Effekt zu erzielen. Einige Parameter in dieser Klasse können Arrays verwenden (wie in der Parameterbeschreibung angegeben), bei der Verwendung von Arrays sollte jedoch das folgende Format eingehalten werden:
Array("Feld1:Wert1", "Feld2:Wahr", "Feld3:100")
Ja, es ist ein bisschen wie das JSON-Format. Wenn Variablen beteiligt sind, dann ist es so:
Array("Feld1:" & Wert1, "Feld2:" & Wert2, "Feld3:" & Wert3)
Man kann sagen, dass fast alle Inhalte, die sich auf Datenbankfelder dieser Klasse beziehen, das obige Array-Format verwenden können, um Bedingungen festzulegen oder Inhalte abzurufen. Das größte Merkmal hierbei ist, dass Sie bei der Verwendung nicht auf den Typ des Felds achten müssen. Fügen Sie einfach hinter dem Feld einen Doppelpunkt und dann den entsprechenden Wert ein. Wenn Sie häufig ASP-Programme von Hand schreiben, werden Sie schnell den Reiz dieser Methode spüren. Zusätzlich zum Datentyp ist es auch sehr praktisch, jederzeit Bedingungen hinzuzufügen und zu löschen. Es spielt keine Rolle, ob Sie noch nicht wissen, wie man es verwendet. Im Folgenden finden Sie viele Beispiele, die dieses Problem veranschaulichen.
Es ist eigentlich nicht schwierig, die Datenbankoperationen von ASP zu kapseln. Ich glaube, Sie haben bereits zuvor ähnlichen Code erstellt oder den gekapselten Code anderer Leute ausgeliehen. Aber wie jeder weiß, ist das Debuggen eine problematische Angelegenheit, sobald ein Fehler bei der Verwendung von gekapseltem Code auftritt. Generell gilt: Je einfacher die gekapselte Operation, desto komplizierter wird das Debuggen. Als ich diese Codes geschrieben habe, habe ich mein Bestes gegeben, um zu überlegen, wie Fehler behoben werden können, wenn etwas schief geht. Während ich den Code so weit wie möglich vereinfache, damit Benutzer die Datenbank bedienen können, kann ich jederzeit SQL-Anweisungen ausgeben, um Fehler zu beheben.
Abschließend ist zu beachten, dass die in diesem Artikel behandelten ASP-Datenbankoperationen nicht für große Datenmengen geeignet sind. Wie Sie wissen, ist es besser, gespeicherte Prozeduren für den Betrieb großer Datenmengen zu verwenden . Auch gekapselt. Wenn Sie eine hohe Effizienz anstreben, sollten Sie bei der Verwendung von ASP dennoch COM+ usw. in Betracht ziehen. Auch diese Kategorie eignet sich für kleine und mittlere ASP-Projekte.
Okay, hier sind die detaillierten Gebrauchsanweisungen:
eins. Datenbankverbindung
In Anbetracht der Nutzungsgewohnheiten der meisten Menschen wird für die Datenbankverbindung ein öffentlicher Prozess verwendet, daher muss jeder ihn im Code ändern. Wenn Sie bereits eine Datenbankverbindung hergestellt haben, kommentieren Sie diese Zeilen einfach aus. Der Code verfügt über vier integrierte Datenbankverbindungsmethoden: MSSql, Access, MySQL und Oracle. Natürlich können Sie diese auch im Quellcode hinzufügen oder löschen. Beispiel ändern:
Dim a: a = CreatConn(0, „TestData“, „localhost“, „username“, „userpassword“)
Dim b : b = CreatConn(1, "Data/%TestDb%.mdb", "", "", "")
Zur Erläuterung: Der erste Parameter kann eine Zeichenfolge sein. Wenn Sie Access verwenden, können Sie im zweiten Parameter sowohl einen relativen als auch einen absoluten Pfad eingeben. Wenn Sie ein Passwort haben, können Sie es auch im fünften Parameter eingeben, wie zum Beispiel:
Dim c: c = CreatConn("ACCESS", "E:/MyWeb/Data/%TestDB%.mdb", "", "", "mdbpassword")
Verwandte Funktionen:
Prototyp: CreateConn(dbType, strDB, strServer, strUid, strPwd)
Funktion: Datenbankverbindungszeichenfolge herstellen
Rückgabewert: String
Parameter:
dbType: Verbindungsdatenbanktyp „Integer“ oder „String“.
(0 oder „MSSQL“) – Microsoft SQL Server
(1 oder „ACCESS“) – Microsoft Office Access
(2 oder „MYSQL“) – MySQL-Server
(3 oder „ORACLE“) – Oracle-Server
strDB: String-Datenbankname oder Datenbankadresse (Zugriff kann absolute oder relative Pfade verwenden)
strServer: String-Datenbankserveradresse, bitte für Access leer lassen.
strUid: String-Datenbankbenutzername, bitte für Access leer lassen.
strPwd: String-Datenbankkennwort
Prototyp: Oc(connStr)
Funktion: Datenbankverbindung öffnen
Rückgabewert: Objekt-Datenbankverbindungsobjekt
Parameter:
connStr: String-Datenbankverbindungsstring, generiert von der CreateConn-Funktion
Prototyp: Co(obj)
Funktion: Objekt schließen
Parameter:
obj: Objekt Der Name des zu schließenden Objekts
Prototyp: OpenConn
Funktion: Öffnen Sie die Standarddatenbankverbindung und erstellen Sie automatisch ein Verbindungsobjekt mit dem Namen Conn.
Parameter: Keine
Prototyp: CloseConn
Funktion: Schließen Sie das Standard-Datenbankverbindungsobjekt namens Conn
Parameter: Keine
2. Datenbankoperationen
Nachfolgend finden Sie die Funktionsbeschreibung dieser Datenbankoperationsklasse. Bitte schauen Sie sich die Anwendungsbeispiele an.
Prototyp: dbCtrl.dbConn(objConn)
Funktion: Rufen Sie das Datenbankverbindungsobjekt ab
Parameter:
objConn: Objekt Das Datenbankverbindungsobjekt, das eingerichtet wurde
Beispiel:
Dim db: Set db = New DbCtrl
db.dbConn = Oc(CreatConn(1,"E:/WebSite/MySite/Data/%TestDb%.mdb","","",""))
Co(db)
Beschreibung: Dieses Attribut ist optional. Wenn dieses Attribut nicht angegeben ist, ist die Standarddatenverbindung das Datenbankverbindungsobjekt mit dem Namen Conn auf der Seite.
Prototyp: dbCtrl.AutoID(TableName)
Funktion: Automatisch eine eindeutige Seriennummer erhalten (automatische Nummerierung)
Rückgabewert: Ganzzahl
Parameter:
TableName: String Der Name der Datentabelle, deren eindeutige Seriennummer ermittelt werden muss
Beispiel:
Neue ID dimmen
newId = db.AutoId("TestTable")
Response.Write(newId)
Prototyp: dbCtrl.GetRecord(TableName,FieldsList,Condition,OrderField,ShowN)
Funktion: Rufen Sie den Datensatz ab, der die Bedingungen erfüllt
Rückgabewert: Objektdatensatzobjekt
Parameter:
TableName: String-Tabellenname
FieldsList: Zeichenfolgenfeldnamen, durch Kommas getrennt. Lassen Sie das Feld leer, um alle Felder anzuzeigen
Bedingung: String- oder Array-Abfragebedingung. Wenn es sich um ein Array handelt, sollte es der vorherigen Parameterkonvention folgen.
orderField: String-Sortiermethode
ShowN: Integer ruft die Anzahl der Datensätze ab, was Select Top N in SQL entspricht
Beispiel:
Dimrs
Setze rs = db.GetRecord("TestTable","fId,fName,fAge","fSex='Male' And IsActive = 1","fName Asc", 0)
Während nicht rs.eof
Response.Write ("Name ist:" & rs(1) & " Alter ist:" & rs(2) & "<br />")
rs.movenext()
Wend
db.C(rs)
Für das obige Beispiel ist die Angabe der Bedingungen im folgenden Array-Format äquivalent:
Setze rs = db.wGetRecord("TestTable","fId,fName,fAge", Array("fSex:Male","IsActive:1"), "fName Asc", 0)
Darüber hinaus können Sie die folgende Anweisung verwenden, um die von dieser Funktion generierte SQL-Anweisung anzuzeigen:
Response.Write(db.wGetRecord("TestTable",fId,fName,fAge", Array("fSex:Male",IsActive:1"), "fName Asc", 0))
Wie Sie sehen, fügen Sie einfach ein w vor der ursprünglichen Funktion ein.
Prototyp: dbCtrl.GetRecordBySQL(strSelect)
Funktion: Datensatzsatz basierend auf der SQL-Anweisung abrufen
Rückgabewert: Objektdatensatzobjekt
Parameter:
strSelect: String-SQL-Anweisung, die zum Generieren eines Recordsets verwendet wird
Beispiel:
Dimrs
Set rs = db.GetRecordBySQL("Select a.Id, a.LastName, b.Group From User a InnerJoin Depart b On a.GroupId = b.GroupId")
„Hier ist Ihr Code...“
db.C(rs)
Prototyp: dbCtrl.GetRecordDetail(TableName, Condition)
Funktion: Basierend auf detaillierten Daten eines bestimmten Datensatzes
Rückgabewert: Objektdatensatzobjekt
Parameter:
TableName: String-Tabellenname
Bedingung: String- oder Array-Abfragebedingung. Wenn es sich um ein Array handelt, sollte es der vorherigen Parameterkonvention folgen.
Beispiel:
Dim rs,Id
Id = Request.QueryString("id")
Setze rs = db.GetRecordDetail("TestTable","Id=" & id)
„Hier ist Ihr Code...“
db.C(rs)
Beschreibung: Wie Sie bereits sehen können, wird dies am häufigsten zum Öffnen einer Detailseite (z. B. einer Seite mit Nachrichteninhalten) verwendet.
Prototyp: dbCtrl.AddRecord(TableName, ValueList)
Funktion: Einen neuen Datensatz hinzufügen
Rückgabewert: ID-Nummer des neuen Datensatzes (Erfolg) oder 0 (Fehler)
Parameter:
TableName: String-Tabellenname
ValueList: Array-Felder und in die Tabelle eingefügte Werte können nur Arrays sein und sollten den vorherigen Parameterkonventionen folgen
Beispiel:
Dim fName, fSex, fWorkYear, fBirth
fName = „Wang Ertan“
fSex = „männlich“
fWorkYear = 12
fBirth = Cdate("1981-10-23")
Düsteres Ergebnis
result = db.AddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True"))
Wenn Ergebnis<>0 Dann
Response.Write("Datensatz erfolgreich hinzugefügt! Die automatische Nummerierungs-ID dieses Datensatzes ist "& Ergebnis)
Ende wenn
Sie sehen, Sie müssen sich wirklich nicht um die Art des Feldes kümmern.
Wenn Sie die Felder und Werte im Code klarer sehen möchten, können Sie es auch so schreiben, aber es hängt von Ihren Vorlieben ab:
result = db.AddRecord("TestTable",Array("Name:" & fName,_
„Sex:“ & fSex,_
„WorkYear:“ & fWorkYear,_
„Geburtstag:“ & fBirth,_
„IsActive:True“))
Darüber hinaus können Sie die folgende Anweisung verwenden, um die von dieser Funktion generierte SQL-Anweisung anzuzeigen:
Response.Write(db.wAddRecord("TestTable",Array("Name:"&fName, "Sex:"&fSex, "WorkYear:"&fWorkYear, "Birthday:"&fBirth, "IsActive:True")))
Hinweis: Der zurückgegebene ID-Wert verwendet eine relativ dumme Methode, die bei großen gleichzeitigen Datenmengen keine Genauigkeit garantiert.
Prototyp: dbCtrl.UpdateRecord(TableName, Condition, ValueList)
Funktion: Datensätze basierend auf angegebenen Bedingungen aktualisieren
Rückgabewert: 1 (Erfolg) oder 0 (Fehler)
Parameter:
TableName: String-Tabellenname
Bedingung: String- oder Array-Aktualisierungsbedingung. Wenn es sich um ein Array handelt, sollte es der vorherigen Parameterkonvention folgen
ValueList: String- oder Array-aktualisierte Felder und Werte. Wenn es sich um ein Array handelt, sollte es der vorherigen Parameterkonvention folgen.
Beispiel:
Dimmen Sie fName, fWorkYear
fName = „Wang San Tan“
fWorkYear = 10
Düsteres Ergebnis
result = db.UpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear))
Wenn Ergebnis<>0 Dann
Response.Write("Daten erfolgreich aktualisieren!")
Ende wenn
Darüber hinaus können Sie die folgende Anweisung verwenden, um die von dieser Funktion generierte SQL-Anweisung anzuzeigen:
Response.Write(db.wUpdateRecord("TestTable", "UId = 1308", Array("Name:"&fName, "WorkYear:"&fWorkYear)))
Prototyp: dbCtrl.DeleteRecord(TableName,IDFieldName,IDValues)
Funktion: Datensätze löschen, die die Bedingungen erfüllen
Rückgabewert: 1 (Erfolg) oder 0 (Fehler)
Parameter:
TableName: String-Tabellenname
IDFieldName: String Der Name des Id-Felds der Tabelle
IDValues: String- oder Array-Löschbedingung, die aus mehreren durch Kommas getrennten ID-Nummern bestehen kann. Wenn es sich um ein Array handelt, sollte es der vorherigen Parameterkonvention folgen.
Beispiel:
Schwache IDs, Ergebnis
ids = Request.Form("selectid") 'Sie können davon ausgehen, dass die hier erhaltenen Werte 12, 34, 256, 314 sind (die vom Kontrollkästchen übermittelten Werte sind wie folgt)
result = db.DeleteRecord("TestTable", "UId", ids)
Wenn Ergebnis<>0 Dann
Response.Write("Daten erfolgreich gelöscht!")
Ende wenn
Natürlich können Sie auch andere Bedingungen mithilfe von Strings oder Arrays angeben, wie zum Beispiel:
result = db.DeleteRecord("TestTable", "UId", "IsActive = 0 And FirstName = 'Tom'")
Darüber hinaus können Sie die folgende Anweisung verwenden, um die von dieser Funktion generierte SQL-Anweisung anzuzeigen:
Response.Write(db.wDeleteRecord("TestTable", "UId", ids))
Prototyp: dbCtrl.ReadTable(TableName, Condition, GetFieldNames)
Funktion: Abrufen des Inhalts anderer Felder in einem Datensatz basierend auf angegebenen Bedingungen
Rückgabewert: String (GetFieldNames ist ein einzelnes Feld) oder Array (GetFieldNames sind mehrere Felder)
Parameter:
TableName: String-Tabellenname
Bedingung: String- oder Array-Abfragebedingung. Wenn es sich um ein Array handelt, sollte es der vorherigen Parameterkonvention folgen.
GetFieldNames: String Ein einzelner Feldname oder mehrere durch Kommas getrennte Feldnamen
Beispiel:
Dimmflüssigkeit, Ergebnis
uid = rs("postid") 'Angenommen, dies ist der Benutzer-ID-Wert in einem Datensatz auf der Seite
result = db.ReadTable("UserTable","UId=" & uid, "UserName")
Response.Write("Herausgeber:" & Ergebnis)
Ich muss sagen, dass diese Funktion in tatsächlichen Anwendungen wahrscheinlich am häufigsten verwendet wird. Was Sie oben sehen, ist ein sehr häufiges Beispiel, um einen anderen Wert in einer Tabelle zu erhalten etwas schwer auszusprechen, aber genau das bedeutet es. Das folgende Beispiel zeigt Ihnen, wie Sie basierend auf diesem Wert mehrere entsprechende Werte erhalten.
Dimmflüssigkeit, Ergebnis
uid = rs("postid") 'Angenommen, dies ist der Benutzer-ID-Wert in einem Datensatz auf der Seite
result = db.ReadTable("UserTable","UId=" & uid, "UserName,UserSex,UserAge")
Response.Write("Publisher:" & result(0) & "<br /> Geschlecht: " & result(1) & "<br /> Alter: " &result(2))
Wie Sie sehen, ist es so einfach, dass die Eingabe mehrerer Feldnamen ein Array ergibt.
Prototyp: dbCtrl.C(objRs)
Funktion: Schließen Sie das Datensatzobjekt
Parameter:
objRs: Objekt Ein Recordset-Objekt auf der Seite
Beispiel:
Dimrs
Setze rs = db.GetRecordDetail("TestTable","Id=123" )
„Hier ist Ihr Code...“
db.C(rs)
Diese Funktion wurde oben in vielen Beispielen verwendet, daher werde ich sie nicht ausführlich erklären. Sie entspricht rs.close: set rs = Nothing.
clsDbctrl.rar