利用JSP的思想来做ASP

2018-09-06 12:17

阅读:404

  程序的功能有了个大体的框架,其实可以自己添加一些功能,比如开始的数据库连接,可以先设置变量然后通过INIT()来选择不同类型的数据库
<%
’OnErrorResumeNext
ClassConnEx
publicConnEx
publicDBpath’---------数据库路径
publicDBtype’---------数据库类型1(Access)2(SqlServer)3(可扩充)
publicConnMethod’--------连接方式(DSN,非DSN)
publicUser
publicPass
SubClass_initialize
EndSub

SubInit()
ConnStr=Driver={MicrosoftAccessDriver(*.mdb)};dbq=Server.MapPath(Date.mdb)
ConnEx.OpenConnStr
CatchError(Class_Terminate)
EndSub

SubCatchError(Str)
IfErrThen
Err.Clear
Class_Terminate()
Response.Write(捕捉到错误,程序结束!在Str处)
Response.End()
EndIf
EndSub

’******************************************
’*通过SQL语句来查找记录是否存在,容易出错
’******************************************

FunctionHasRecordBySql(Sql)
CallCheckSql(Sql,R)
DimRs,HasR
SetRs=ConnEx.Execute(Sql)
CatchError(HasReordSql)
IfNot(Rs.eofOrRs.bof)Then
HasR=False
Else
HasR=True
EndIf
Rs.Close
SetRs=Nothing
HasRecordBySql=HasR
EndFunction

’***************************************
’*通过ID来查找记录是否存在
’***************************************

FunctionHasRecordById(StrTableName,IntID)
’CheckValue(IntID,1)
DimRs,HasR
Sql=Selecttop1*fromStrTableNameWhereId=IntID
CallCheckSql(Sql,R)
SetRs=ConnEx.Execute(Sql)
CatchError(HasRecordByID)
IfNot(Rs.eofOrRs.bof)Then
HasR=False
Else
HasR=True
EndIf
Rs.close
SetRs=Nothing
HasRecordById=HasR
EndFunction

’**********************************************
’*通过SQL语句取得记录集
’**********************************************
FunctionGetRsBySql(Sql)
CallCheckSql(Sql,R)
DimRs
SetRs=Server.CreateObject(Adodb.RecordSet)
Rs.OpenSql,ConnEx,1,1
SetGetRsBySql=Rs
EndFunction

’*********************************************
’*取得某个字段的值
’*********************************************
FunctionGetValueBySql(Sql)
CallCheckSql(Sql,R)
DimRs,ReturnValue
SetRs=ConnEx.Execute(Sql)
CatchError(GetValueBySql)
IfNot(Rs.EofOrRs.Bof)Then
ReturnValue=Rs(0)
Else
ReturnValue=没有记录
EndIf
Rs.Close
SetRs=Nothing
GetValueBySql=ReturnValue
EndFunction

’==================================================Update,Insert==================================================================

’*********************************************
’*利用SQL修改数据
’*********************************************
FunctionUpdateBySql(Sql)
CallCheckSql(Sql,w)
ConnEx.Execute(Sql)
CatchError(UpdateBySql)
UpdateBySql=True
EndFunction

’********************************************
’*利用SQL语句插入数据
’********************************************
FunctionInsertBySql(Sql)
CallCheckSql(Sql,w)
ConnEx.Execute(Sql)
CatchError(InsertBySql)
InsertBySql=True
EndFunction

’======================================================Delete=============================================================

’********************************************
’*通过SQL语句删除
’********************************************
FunctionDeleteBySql(Sql)
CallCheckSql(Sql,D)
ConnEx.Execute(Sql)
CatchError(DeleteBySql)
DeleteBySql=True
EndFunction

’********************************************
’*检查SQL语句权限,根据标志Flag来检测语句拥有的权限
’********************************************
SubCheckSql(Sql,Flag)
DimStrSql,SinCounts,DouCounts,i
StrSql=Lcase(Sql)
SinCounts=0
DouCounts=0
Fori=1toLen(StrSql)
IfMid(StrSql,i,1)=’ThenSinCounts=SinCounts+1
IfMid(StrSql,i,1)=ThenDouConnts=DouCounts+1
Next

If(SinCountsMod2)<>0Or(DouCountsMod2)<>0OrInstr(StrSql,;)>0Then
CallClass_Terminate()
Response.Write(SQL语法错误!)
Response.End()
EndIf
SelectCaseFlag
CaseR,r:
IfInstr(StrSql,delete)>0OrInstr(StrSql,update)OrInstr(StrSql,drop)>0OrInstr(StrSql,insert)>0Then
Class_Terminate()
Response.Write(权限不足,没有执行写操作的权限)
Response.End()
EndIf
CaseW,w:
IfInstr(StrSql,delete)>0OrInstr(StrSql,drop)>0OrInstr(StrSql,select)>0Then
Class_Terminate()
Response.Write(权限不足,没有执行删除操作的权限)
Response.End()
EndIf
CaseD,d:
CaseElse:
Response.Write(函数CheckSql标志错误!)
EndSelect
EndSub

SubClass_Terminate
IfNotIsEmpty(FriendConn)Then
FriendConn.Close
SetFriendConn=Nothing
CatchError()
EndIf
EndSub
EndClass
%>


评论


亲,登录后才可以留言!