我的人生路  
          日歷
          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567
          統(tǒng)計
          • 隨筆 - 74
          • 文章 - 57
          • 評論 - 7
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          顏色

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          這幾天開始接觸JSP里面一些BEAN的寫法,然后自己想了想,認(rèn)為其實在ASP里面也可以采取這一思想來做。雖然不是很純,不徹底,但是能夠把一些邏輯處理分離出來,更適合程序的移植性,提高了開發(fā)周期。我自己寫了個類ConnEX包含了一些對數(shù)據(jù)庫的操作,覺得應(yīng)該可以包括一大部分的邏輯處理,但是這樣也提高了錯誤幾率,如果你把SQL語句控制的比較好的話,應(yīng)該是利大于弊的,這里都是一點(diǎn)點(diǎn)拙見,望大家指正。

          程序的功能有了個大體的框架,其實可以自己添加一些功能,比如開始的數(shù)據(jù)庫連接 ,可以先設(shè)置變量然后通過INIT() 來選擇不同類型的數(shù)據(jù)庫

          <%
          '*******************************************************************************************
          '* 程序:ConnEx.asp
          '*
          '* 描述:模仿JAVABEAN寫的一個類,專門操作數(shù)據(jù)庫,提供多種方法操作,但要避免SQL語法錯誤!
          '*
          '* 作者:田野 Email:Foxty@sina.com
          '*
          '* 日期:2005.06.0
          '*******************************************************************************************


          'On Error Resume Next
          Class ConnEx
          public ConnEx
          public DBpath '---------數(shù)據(jù)庫路徑
          public DBtype '---------數(shù)據(jù)庫類型 1(Access) 2(SqlServer) 3(可擴(kuò)充)
          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("捕捉到錯誤,程序結(jié)束!在"&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修改數(shù)據(jù)
          '*********************************************
          Function UpdateBySql( Sql )
          Call CheckSql(Sql,"w")
          ConnEx.Execute(Sql)
          CatchError("UpdateBySql")
          UpdateBySql = True
          End Function

          '********************************************
          '*利用SQL語句插入數(shù)據(jù)
          '********************************************
          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語句權(quán)限,根據(jù)標(biāo)志Flag 來檢測語句擁有的權(quán)限
          '********************************************
          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("權(quán)限不足,沒有執(zhí)行寫操作的權(quán)限")
          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("權(quán)限不足,沒有執(zhí)行刪除操作的權(quán)限")
          Response.End()
          End If
          Case "D","d":
          Case Else:
          Response.Write("函數(shù)CheckSql標(biāo)志錯誤!")
          End Select
          End Sub

          Sub Class_Terminate
          If Not IsEmpty(FriendConn) Then
          FriendConn.Close
          Set FriendConn = Nothing
          CatchError()
          End If
          End Sub
          End Class
          %>



          歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人
          posted on 2005-07-07 10:34 一天一點(diǎn)愛戀 閱讀(232) 評論(1)  編輯  收藏
          評論:
          • # re: 利用 JSP的思想來做ASP  啟示 Posted @ 2013-11-14 15:31
            Function UpdateBySql( Sql )
            Call CheckSql(Sql,"w")
            ConnEx.Execute(Sql)
            CatchError("UpdateBySql")
            UpdateBySql = True
            End Function
              回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
           
          Copyright © 一天一點(diǎn)愛戀 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 临沂市| 秦皇岛市| 北票市| 沂南县| 龙陵县| 县级市| 广西| 海丰县| 弋阳县| 五台县| 永福县| 时尚| 东城区| 德化县| 炉霍县| 工布江达县| 潼南县| 原阳县| 陆良县| 甘孜县| 高淳县| 青阳县| 大方县| 江西省| 察哈| 常宁市| 确山县| 长沙市| 清原| 兴国县| 三江| 乌拉特中旗| 宁波市| 舟山市| 渑池县| 安仁县| 惠水县| 南投县| 沙河市| 白城市| 商城县|