Die Funktionen des Programms haben einen allgemeinen Rahmen. Tatsächlich können Sie einige Funktionen selbst hinzufügen, z. B. die anfängliche Datenbankverbindung. Sie können
zuerst Variablen festlegen und dann über INIT ()
<%
auswählen.
„Bei Fehler Weiter fortsetzen.“
ClassConnEx
publicConnEx
public DBpath '---------Datenbankpfad
public DBtype '---------Datenbanktyp 1 (Zugriff) 2 (SqlServer) 3 (erweiterbar)
public ConnMethod '--------Verbindungsmethode (DSN, Nicht-DSN)
öffentlicher Benutzer
öffentlicher Pass
Sub Class_initialize
End Sub
Sub Init()
ConnStr = "Driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("Date.mdb")
Setze ConnEx = Server.Createobject("ADODB.CONNECTION")
ConnEx.Open ConnStr
CatchError("Class_Terminate")
End Sub
Sub CatchError( Str )
Wenn Sie sich irren, dann
Err.Clear
Class_Terminate()
Response.Write("Fehler abgefangen, Programm endet! Bei "&Str&"")
Response.End()
Ende wenn
End Sub
'*********************************************
'*Die Suche nach der Existenz von Datensätzen über SQL-Anweisungen ist fehleranfällig'************************************** ** ******
Funktion HasRecordBySql(Sql)
Rufen Sie CheckSql(Sql,"R") auf
Dim Rs,HasR
Setze Rs = ConnEx.Execute( Sql )
CatchError("HasReordSql")
Wenn nicht (Rs.eof oder Rs.bof), dann
HasR=Falsch
Anders
HasR=Wahr
Ende wenn
Rs.Schließen
Setze Rs = Nichts
HasRecordBySql = HasR
Endfunktion
'*********************************************
'*Finden Sie anhand der ID heraus, ob der Datensatz vorhanden ist'*********************************
Function HasRecordById(StrTableName, IntID )
'CheckValue(IntID, 1)
Dim Rs,HasR
Sql = „Wählen Sie Top 1 * aus „&StrTableName&“ aus, wobei Id = „&IntID
Rufen Sie CheckSql(Sql,"R") auf
Setze Rs = ConnEx.Execute(Sql)
CatchError("HasRecordByID")
Wenn nicht (Rs.eof oder Rs.bof), dann
HasR=Falsch
Anders
HasR=Wahr
Ende wenn
Rs.schließen
Setze Rs = Nichts
HasRecordById = HasR
Endfunktion
'**************************************************
'*Den Datensatz über die SQL-Anweisung abrufen'**************************************** ** *****
Funktion GetRsBySql( Sql )
Rufen Sie CheckSql(Sql,"R") auf
Dim Rs
Setze Rs = Server.CreateObject("Adodb.RecordSet")
Rs.Open Sql,ConnEx,1,1
Setze GetRsBySql = Rs
Endfunktion
'************************************************** *
'*Den Wert eines bestimmten Feldes abrufen'**************************************** ** ****
Funktion GetValueBySql( Sql )
Rufen Sie CheckSql(Sql,"R") auf
Dim Rs,ReturnValue
Setze Rs = ConnEx.Execute(Sql)
CatchError("GetValueBySql")
Wenn nicht (Rs.Eof oder Rs.Bof), dann
Rückgabewert = Rs(0)
Anders
ReturnValue = „Kein Datensatz“
Ende wenn
Rs.Schließen
Setze Rs = Nichts
GetValueBySql = ReturnValue
End Function
'============================Update,Insert================ ====
'********************************************* ***
'*Verwenden Sie SQL, um Daten zu ändern'********************************************* **
Funktion UpdateBySql( Sql )
Rufen Sie CheckSql(Sql,"w") auf
ConnEx.Execute(Sql)
CatchError("UpdateBySql")
UpdateBySql = True
Endfunktion
'************************************************** *
'*Daten mithilfe von SQL-Anweisungen einfügen'********************************************* **
Funktion InsertBySql(Sql)
Rufen Sie CheckSql(Sql,"w") auf
ConnEx.Execute(Sql)
CatchError("InsertBySql")
InsertBySql = True
Funktion beenden
'======================Löschen======================
'* ** *****************************************
'*Über SQL-Anweisung löschen'********************************************* ***** *
Funktion DeleteBySql(Sql)
Rufen Sie CheckSql(Sql,"D") auf
ConnEx.Execute(Sql)
CatchError("DeleteBySql")
DeleteBySql = True
Endfunktion
'************************************************** *
'*Überprüfen Sie die SQL-Anweisungsberechtigungen und ermitteln Sie die Berechtigungen, die der Anweisung gemäß dem Flag gehören'****************************** **** *************
Sub CheckSql( Sql , Flag )
Dim StrSql,SinCounts,DouCounts,i
StrSql = Lcase(Sql)
SinCounts = 0
DouCounts = 0
Für i = 1 bis Len(StrSql)
Wenn Mid(StrSql,i,1) = „'“, dann ist SinCounts = SinCounts + 1
Wenn Mid(StrSql,i,1) = „““ Dann ist DouConnts = DouCounts + 1
Next
If (SinCounts Mod 2) <> 0 Or (DouCounts Mod 2) <> 0 Or Instr(StrSql,";") > 0 Then
Rufen Sie Class_Terminate() auf
Response.Write("SQL-Syntaxfehler!")
Response.End()
Ende wenn
Wählen Sie Fallmarkierung aus
Fall „R“, „r“:
Wenn Instr(StrSql,"delete") > 0 Oder Instr(StrSql,"update") Oder Instr(StrSql,"drop") > 0 Oder Instr(StrSql,"insert") > 0 Dann
Class_Terminate()
Response.Write("Unzureichende Berechtigungen, keine Berechtigung zum Ausführen von Schreibvorgängen")
Response.End()
Ende wenn
Fall „W“, „w“:
Wenn Instr(StrSql,"delete") > 0 Oder Instr(StrSql,"drop") > 0 Oder Instr(StrSql,"select") > 0 Dann
Class_Terminate()
Response.Write("Unzureichende Berechtigungen, keine Berechtigung zum Ausführen des Löschvorgangs")
Response.End()
Ende wenn
Fall „D“, „d“:
Anderer Fall:
Response.Write("Funktions-CheckSql-Flag-Fehler!")
Endauswahl
End Sub
Sub Class_Terminate
Wenn nicht IsEmpty(FriendConn) Dann
FriendConn.Close
Setze FriendConn = Nothing
CatchError()
Ende wenn
Sub beenden
Unterricht beenden
%>