利用 JSP的思想来做ASP

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

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

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


'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
%>

java设计模式之面向对象思想

对于初学java的人来说,由于习惯了写面向过程的程序,拿过来一个问题,总想将其分为一步一步来做,面向过程的思想根深蒂固,即使用java来写,也是披着面向对象的皮写面向过程的代码,下面通过一个例子来说明...
  • m_1031798928
  • m_1031798928
  • 2015年09月04日 09:43
  • 795

PHP,ASP,JSP的区别

 ASP全名ActiveServerPages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Javascr...
  • wieyi
  • wieyi
  • 2016年04月18日 23:09
  • 4940

JSP和ASP的区别和联系

JSP和ASP的区别和联系 总的来讲,JavaSever PagesTM(JSP)和 微软的Active Sever Pages(ASP)在技术方面有许多相似之处。两者都是为基于WEB应用...
  • u012074820
  • u012074820
  • 2014年03月06日 14:43
  • 3013

海思hi3716c机顶盒接usb摄像头和usb无线耳机时,无线耳机有时没有声音

两个USB设备分别是: A:USB摄像头带录音功能,但不带放音功能。 B:USB无线耳机是使用USB转2.4G的无线耳机。 具体现象: 1, A,B两者同时插上机顶盒,并开机进入and...
  • fgwf1
  • fgwf1
  • 2014年04月18日 17:11
  • 2184

ASP、JSP、PHP 三种技术比较

目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。   简 ...
  • lzb2512
  • lzb2512
  • 2013年05月28日 14:06
  • 9838

一句话木马的原理及利用分析(asp,aspx,php,jsp)

一句话木马的适用环境: 1.服务器的来宾账户有写入权限 2.已知数据库地址且数据库格式为asa或asp 3.在数据库格式不为asp或asa的情况下,如果能将一句话插入到asp文件中也可 ...
  • xysoul
  • xysoul
  • 2015年03月20日 13:59
  • 1820

asp、php、asp.net、jsp介绍及优缺点比较

现在主流的网站开发语言不外乎asp、php、asp.net、jsp等 网页从开始简单的HTML到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新新的版本,以下分析各种语...
  • Long_Xiao_Yun
  • Long_Xiao_Yun
  • 2016年03月17日 09:16
  • 4840

谈谈asp,php,jsp的优缺点

asp、php、asp.net、jsp等主流网站开发语言比较  今天发一篇关于主流网站开发语言的文章 — “asp、php、asp.net、jsp等主流网站开发语言比较”,和大家一起交流一下各种主流...
  • Road2010
  • Road2010
  • 2014年06月09日 18:09
  • 1869

SQLSERVER用无中生有的思想来替代游标

昨天在MSDN论坛看到一个帖子,帖子中LZ需要根据某列的值把其他列的值插入到额外列 帖子地址:http://social.technet.microsoft.com/Forums/zh-CN/3...
  • zhoujunqiangjava
  • zhoujunqiangjava
  • 2016年10月06日 18:35
  • 364

深搜算法:倒油/面向对象的思想来做

题目:有一位厨师要从盛12斤油(a桶)的桶中倒出6斤油来,可是手边只有盛8斤油(b桶)和盛5斤油(c桶)的两个桶,问如何操作才能将6斤取出来呢?下面为JAVA实现代码: 主类:package cn....
  • qq_26525215
  • qq_26525215
  • 2016年03月13日 02:21
  • 588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用 JSP的思想来做ASP
举报原因:
原因补充:

(最多只允许输入30个字)