RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
利用 JSP的思想来做ASP
  • 作者:xiaoxiao
  • 发表时间:2020-12-23 11:00
  • 来源:未知

这几天开始接触JSP里面一些BEAN的写法,然后自己想了想,认为其实在ASP里面也可以采取这一思想来做。虽然不是很纯,不彻底,但是能够把一些逻辑处理分离出来,更适合程序的移植性,提高了开发周期。我自己写了个类ConnEX包含了一些对数据库的操作,觉得应该可以包括一大部分的逻辑处理,但是这样也提高了错误几率,如果你把SQL语句控制的比较好的话,应该是利大于弊的,这里都是一点点拙见,望大家指正。

程序的功能有了个大体的框架,其实可以自己添加一些功能,比如开始的数据库连接 ,可以先设置变量然后通过INIT() 来选择不同类型的数据库

<%'*******************************************************************************************'*   程序:ConnEx.asp'* '*   描述:模仿JAVABEAN写的一个类,专门操作数据库,提供多种方法操作,但要避免SQL语法错误!'*'*   作者:田野 Email:Foxty@sina.com'*'*   日期:2005.06.0'*******************************************************************************************

'On Error Resume NextClass 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 SubEnd Class%>