⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbcontrol.class.asp

📁 一个很好的asp cms管理系统
💻 ASP
字号:
<%
'////////////////////////////////////////////////////////////////////////
'本页:
'   Tsys 数据库控制类
'说明:
'   本类支持ASP下Access与SqlServer数据库的无缝访问,避免了数据库编程差异问题.
'要求:
'   在使用本类进行数据库访问时,所有的Sql脚本必须与Sql Server为准
'////////////////////////////////////////////////////////////////////////

Class DBControl
    Public Conn, DBType

    '初始化类
    Private Sub Class_Initialize
        DBType = Cfg.DataBase_Type
    End Sub

    '函数:创建数据库链接
    '返回:链接对象
    Public Function Open()
        Set Conn = Server.CreateObject("ADODB.CONNECTION")
        Conn.Open Cfg.ConnStr
    End Function

    '函数:创建数据库链接
    '参数:链接串
    '返回:链接对象
    Public Function Close()
        Conn.Close
        Set Conn = Nothing
    End Function

    '函数:创建数据库RecordSet对象
    '参数:链接串
    '返回:链接对象
    Public Function CreateRS()
        Set CreateRS = Server.CreateObject("ADODB.RecordSet")
    End Function

    '函数:根据当前数据库类型转换Sql脚本
    '参数:Sql串
    '返回:转换结果Sql串
    Public Function SqlTran(Sql)
        If DBType = "ACCESS" Then
            SqlTran = SqlServer_To_Access(Sql)
        Else
            SqlTran = Sql
        End If
    End Function

    '函数:数据库脚本执行(代Sql转换)
    '参数:Sql脚本
    '返回:执行结果
    '说明:本执行可自动根据数据库类型对部分Sql基础语法进行转换执行
    Public Function ExeCute(Sql)
        On Error Resume Next

        Sql = SqlTran(Sql)
        Set ExeCute = Conn.ExeCute(Sql)

        If Err.Number <> 0 Then
            Response.Write "数据库脚本执行失败!(时间:" & Now() & "),<a href=""javascript:history.back();void(0);"">返回</a><br><b>错误:</b><div style='color:red;border:1 solid #C0C0C0 ;padding:5px;background-color:#F6F6F6'>" & Err.Description & Err.Source & "</div>"
            If Cfg.PrintDBSqlWithError Then
                Response.Write "<b>错误脚本:</b><div style='color:red;border:1 solid #C0C0C0 ;padding:5px;background-color:#F6F6F6'>"&Sql&"</div>"
            End If
            Response.End
        End If
    End Function

    '函数:数据库脚本执行
    '参数:Sql脚本
    '返回:执行结果
    Public Function ExeCute2(Sql)
        Set ExeCute2 = Conn.ExeCute(Sql)
    End Function

    '函数:SqlServer(97-2000) to Access(97-2000)
    '参数:Sql,数据库类型(ACCESS,SQLSERVER)
    '说明:
    Public Function SqlServer_To_Access(Sql)
        Dim regEx, Matches, Match
        '创建正则对象
        Set regEx = New RegExp
        regEx.IgnoreCase = True
        regEx.Global = True
        regEx.MultiLine = True

        '转:GetDate()
        regEx.Pattern = "(?=[^']?)GETDATE\(\)(?=[^']?)"
        Sql = regEx.Replace(Sql,"NOW()")

        '转:UPPER()
        regEx.Pattern = "(?=[^']?)UPPER\([\s]?(.+?)[\s]?\)(?=[^']?)"
        Sql = regEx.Replace(Sql,"UCASE($1)")

        '转:日期表示方式
        '说明:时间格式必须是2004-23-23 11:11:10 标准格式
        regEx.Pattern = "'([\d]{4,4}\-[\d]{1,2}\-[\d]{1,2}(?:[\s][\d]{1,2}:[\d]{1,2}:[\d]{1,2})?)'"
        Sql = regEx.Replace(Sql,"#$1#")
        
        regEx.Pattern = "DATEDIFF\([\s]?(second|minute|hour|day|month|year)[\s]?\,[\s]?(.+?)[\s]?\,[\s]?(.+?)([\s]?\)[\s]?)"
        Set Matches = regEx.ExeCute(Sql)
        Dim temStr
        For Each Match In Matches
            temStr = "DATEDIFF("
            Select Case lcase(Match.SubMatches(0))
                Case "second" :
                    temStr = temStr & "'s'"
                Case "minute" :
                    temStr = temStr & "'n'"
                Case "hour" :
                    temStr = temStr & "'h'"
                Case "day" :
                    temStr = temStr & "'d'"
                Case "month" :
                    temStr = temStr & "'m'"
                Case "year" :
                    temStr = temStr & "'y'"
            End Select
            temStr = temStr & "," & Match.SubMatches(1) & "," &  Match.SubMatches(2) & Match.SubMatches(3)
            Sql = Replace(Sql,Match.Value,temStr,1,1)
        Next

        '转:Insert函数
        regEx.Pattern = "CHARINDEX\([\s]?'(.+?)'[\s]?,[\s]?'(.+?)'[\s]?\)[\s]?"
        Sql = regEx.Replace(Sql,"INSTR('$2','$1')")

        Set regEx = Nothing
        SqlServer_To_Access = Sql
    End Function

    '注消类
    Private Sub Class_Terminate
    End Sub
End Class
%>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -