+------------------------------------------------------------------------------------------------------+
敝帚自珍:ASP数据库操作类Oledb [2005-10-18] Xmercy 发表在 Develop
| <% 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 %> | |
+------------------------------------------------------------------------------------------------------+ |