2005/10/18 | 敝帚自珍:ASP数据库操作类Oledb
类别(Develop) | 评论(2) | 阅读(92) | 发表于 09:00
<%
Class Oledb

    Private IDataPath
    Private IConnectionString

    Private Conn
    Private Cmd
    Private Param
    Private Rs

    Public Property Let DataPath(ByVal value)
        IDataPath = value
        IConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(IDataPath)
    End Property

    Public Property Get DataPath()
        DataPath = IDataPath
    End Property

    Public Property Let ConnectionString(ByVal value)
        IConnectionString = value
    End Property

    Public Property Get ConnectionString()
        ConnectionString = IConnectionString
    End Property

    Public Function OpenConn()
        If Conn.State = adStateClosed Then
            Conn.Open ConnectionString
        End If
        Set OpenConn = Conn
    End Function

    Public Function Insert(ByVal Sql, ByVal values)
        OpenConn()
        Rs.Open Sql, Conn, 3, 3, adCmdText
        Rs.AddNew
            Dim i, l
            l = UBound(values)
            For i = 1 To l + 1
                Rs(i) = values(i - 1)
            Next
        Rs.Update
        Insert = Rs(0)
    End Function

    Public Function Execute(ByVal Sql)
        OpenConn()
        Set Execute = Conn.Execute(Sql)
    End Function

    Public Function ExecuteScalar(ByVal Sql)
        Dim iRs : Set iRs = Execute(Sql)
        If Not iRs.BOF Then ExecuteScalar = iRs(0)
    End Function

    Public Function ExecuteNonQuery(ByVal Sql)
        OpenConn()
        Call Conn.Execute(Sql, ExecuteNonQuery)
    End Function

    Public Function InsertSp(ByVal Sql, ByVal Params)
        OpenConn()
        Rs.Open Sql, Conn, 3, 3, adCmdStoredProc
        Rs.AddNew
            Dim i, l
            l = UBound(Params)
            For i = 1 To l + 1
                Rs(i) = Params(i - 1)
            Next
        Rs.Update
        InsertSp = Rs(0)
    End Function

    Public Function ExecuteSp(ByVal SpName, ByVal Params)
        With Cmd
            Set .ActiveConnection = OpenConn()
            .CommandText = SpName
            .CommandType = &H0004
            .Prepared = True
            Set ExecuteSp = .Execute(,Params)
        End With
    End Function

    Public Function ExecuteDataTableSp(ByVal SpName, ByVal Params)
        OpenConn()
        If Rs.State <> adStateClose Then
            Rs.Close()
        End If
        Dim SpStr
        If IsNull(Params) Or IsEmpty(Params) Then
            SpStr = SpName
        Else
            If IsArray(Params) Then
                SpStr = "Execute " & SpName & " " & Join(Params, ",")
            Else
                SpStr = "Execute " & SpName & " " & Params
            End If
        End If
        Call Rs.Open(SpStr, Conn, 1, 1, adCmdStoredProc)
        Set ExecuteDataTableSp = Rs
    End Function

    Public Function ExecuteDataTableSp1(ByVal SpName, ByVal Params)
        OpenConn()
        Dim Rs1 : Set Rs1 = Server.CreateObject("ADODB.RecordSet")
        Dim SpStr
        If IsNull(Params) Or IsEmpty(Params) Then
            SpStr = SpName
        Else
            If IsArray(Params) Then
                SpStr = "Execute " & SpName & " " & Join(Params, ",")
            Else
                SpStr = "Execute " & SpName & " " & Params
            End If
        End If
        Call Rs1.Open(SpStr, Conn, 1, 1, adCmdStoredProc)
        Set ExecuteDataTableSp1 = Rs1
        Set Rs1 = Nothing
    End Function

    Public Function ExecuteScalarSp(ByVal SpName, ByVal Params)
        Dim iRs : Set iRs = ExecuteSp(SpName, Params)
        If Not iRs.BOF Then ExecuteScalarSp = iRs(0)
    End Function

    Public Function ExecuteNonQuerySp(ByVal SpName, ByVal Params)
        With Cmd
            Set .ActiveConnection = OpenConn()
            .CommandText = SpName
            .CommandType = &H0004
            .Prepared = True
            'Response.Write SpName & "," & Join(Params, "-")
            'Response.End
            Call .Execute(ExecuteNonQuerySp, Params)
        End With
    End Function

    Private Sub Class_Initialize()
        Set Conn = Server.CreateObject("ADODB.Connection")
        Set Cmd = Server.CreateObject("ADODB.Command")
        Set Param = Server.CreateObject("ADODB.Parameter")
        Set Rs = Server.CreateObject("ADODB.RecordSet")
        DataPath = "/data/data.mdb"
    End Sub
    Private Sub Class_Terminate()
        Set Param = Nothing
        Set Cmd = Nothing
        CloseRs()
        CloseConn()
    End Sub

    Private Sub CloseConn()
        If Conn.State <> adStateClose Then
            Conn.Close()
            Set Conn = Nothing
        End If
    End Sub

    Private Sub CloseRs()
        If Rs.State <> adStateClose Then
            Rs.Close()
            Set Rs = Nothing
        End If
    End Sub

End Class
%>
0

评论Comments

日志分类
首页[66]
Develop[14]
Plus[3]
Melody[7]
Essay[38]
Archive[4]