程序的功能有了個大體的框架,其實可以自己添加一些功能,比如開始的數據庫連接 ,可以先設置
變量然後通過INIT() 來選擇不同類型的數據庫
<%
’On Error Resume Next
Class ConnEx
public ConnEx
public DBpath ’---------數據庫路徑
public DBtype ’---------數據庫類型 1(Access) 2(SqlServer) 3(可擴充)
public ConnMethod ’--------連接方式 (DSN,非DSN)
public User
public Pass
Sub Class_initialize
End Sub
Sub Init()
ConnStr = "Driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("Date.mdb")
Set ConnEx = Server.Createobject("ADODB.CONNECTION")
ConnEx.Open ConnStr
CatchError("Class_Terminate")
End Sub
Sub CatchError( Str )
If Err Then
Err.Clear
Class_Terminate()
Response.Write("捕捉到錯誤,程序結束!在"&Str&"處")
Response.End()
End If
End Sub
’******************************************
’*通過SQL語句來查找記錄是否存在,容易出錯
’******************************************
Function HasRecordBySql( Sql )
Call CheckSql(Sql,"R")
Dim Rs,HasR
Set Rs = ConnEx.Execute( Sql )
CatchError("HasReordSql")
If Not (Rs.eof Or Rs.bof) Then
HasR = False
Else
HasR = True
End If
Rs.Close
Set Rs = Nothing
HasRecordBySql = HasR
End Function
’***************************************
’*通過ID來查找記錄是否存在
’***************************************
Function HasRecordById( StrTableName , IntID )
’CheckValue( IntID , 1 )
Dim Rs,HasR
Sql = "Select top 1 * from "&StrTableName&" Where Id = "&IntID
Call CheckSql(Sql,"R")
Set Rs = ConnEx.Execute(Sql)
CatchError("HasRecordByID")
If Not (Rs.eof Or Rs.bof) Then
HasR = False
Else
HasR = True
End If
Rs.close
Set Rs = Nothing
HasRecordById = HasR
End Function
’**********************************************
’*通過SQL語句取得記錄集
’**********************************************
Function GetRsBySql( Sql )
Call CheckSql(Sql,"R")
Dim Rs
Set Rs = Server.CreateObject("Adodb.RecordSet")
Rs.Open Sql,ConnEx,1,1
Set GetRsBySql = Rs
End Function
’*********************************************
’*取得某個字段的值
’*********************************************
Function GetValueBySql( Sql )
Call CheckSql(Sql,"R")
Dim Rs,ReturnValue
Set Rs = ConnEx.Execute(Sql)
CatchError("GetValueBySql")
If Not( Rs.Eof Or Rs.Bof ) Then
ReturnValue = Rs(0)
Else
ReturnValue = "沒有記錄"
End If
Rs.Close
Set Rs = Nothing
GetValueBySql = ReturnValue
End Function
’============================Update,Insert====================
’*********************************************
’*利用SQL修改數據
’*********************************************
Function UpdateBySql( Sql )
Call CheckSql(Sql,"w")
ConnEx.Execute(Sql)
CatchError("UpdateBySql")
UpdateBySql = True
End Function
’********************************************
’*利用SQL語句插入數據
’********************************************
Function InsertBySql(Sql)
Call CheckSql(Sql,"w")
ConnEx.Execute(Sql)
CatchError("InsertBySql")
InsertBySql = True
End Function
’=====================Delete=====================
’********************************************
’*通過SQL語句刪除
’********************************************
Function DeleteBySql( Sql )
Call CheckSql(Sql,"D")
ConnEx.Execute(Sql)
CatchError("DeleteBySql")
DeleteBySql = True
End Function
’********************************************
’*檢查SQL語句權限,根據標志Flag 來檢測語句擁有的權限
’********************************************
Sub CheckSql( Sql , Flag )
Dim StrSql,SinCounts,DouCounts,i
StrSql = Lcase(Sql)
SinCounts = 0
DouCounts = 0
For i = 1 to Len(StrSql)
If Mid(StrSql,i,1) = "’" Then SinCounts = SinCounts + 1
If Mid(StrSql,i,1) = """" Then DouConnts = DouCounts + 1
Next
If (SinCounts Mod 2) <> 0 Or (DouCounts Mod 2) <> 0 Or Instr(StrSql,";") > 0 Then
Call Class_Terminate()
Response.Write("SQL語法錯誤!")
Response.End()
End If
Select Case Flag
Case "R","r":
If Instr(StrSql,"delete") > 0 Or Instr(StrSql,"update") Or Instr(StrSql,"drop") > 0 Or Instr(StrSql,"insert") > 0 Then
Class_Terminate()
Response.Write("權限不足,沒有執行寫操作的權限")
Response.End()
End If
Case "W","w":
If Instr(StrSql,"delete") > 0 Or Instr(StrSql,"drop") > 0 Or Instr(StrSql,"select") > 0 Then
Class_Terminate()
Response.Write("權限不足,沒有執行刪除操作的權限")
Response.End()
End If
Case "D","d":
Case Else:
Response.Write("函數CheckSql標志錯誤!")
End Select
End Sub
Sub Class_Terminate
If Not IsEmpty(FrIEndConn) Then
FrIEndConn.Close
Set FrIEndConn = Nothing
CatchError()
End If
End Sub
End Class
%>