一个ACCESS数据库访问的类第1/3页
                        
                            时间:2021-07-01 10:21:17
                            帮助过:61人阅读
							                        
                     
                    
                    
            大部分ASP应用,都离不开对数据库的访问及操作,所以,对于数据库部分的访问操作,我们应该单独抽象出来,封装成一个单独的类。如果所用语言支持继承,可以封装一个这样的类,然后在数据操作层继承即可。下面是我写的一个ACCESS数据库访问的类,针对ACCESS作了优化,不过因为缺少足够的应用测试,可能仍然存在未知的bug及应用限制,主要代码如下: 
<% 
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 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 
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 
%> 
            123下一页阅读全文