大部分ASP應用,都離不開對數據庫的訪問及操作,所以,對於數據庫部分的訪問操作,我們應該單獨抽像出來,封裝成一個單獨的類。如果所用語言支持繼承,可以封裝一個這樣的類,然後在數據操作層繼承即可。下面是我寫的一個ACCESS數據庫訪問的類,針對ACCESS作了優化,不過因為缺少足夠的應用測試,可能仍然存在未知的bug及應用限制,主要代碼如下:
<%
ClassOledbPrivateIDataPath
PrivateIConnectionStringPrivateConn
PrivateCmd
PrivateParam
PrivateRsPublicPropertyLetDataPath(ByValValue)
IDataPath=Value
IConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(IDataPath)
EndPropertyPublicPropertyGetDataPath()
DataPath=IDataPath
EndPropertyPublicPropertyLetConnectionString(ByValValue)
IConnectionString=Value
EndPropertyPublicPropertyGetConnectionString()
ConnectionString=IConnectionString
EndPropertyPublicFunctionOpenConn()
IfConn.State=adStateClosedThen
Conn.OpenConnectionString
EndIf
SetOpenConn=Conn
EndFunctionPublicFunctionInsert(ByValSql,ByValValues)
OpenConn()
Rs.OpenSql,Conn,3,3,adCmdText
Rs.AddNew
Dimi,l
l=UBound(Values)
Fori=1Tol+1
Rs(i)=Values(i-1)
Next
Rs.Update
Insert=Rs(0)
EndFunctionPublicFunctionExecute(ByValSql)
OpenConn()
SetExecute=Conn.Execute(Sql)
EndFunctionPublicFunctionExecuteScalar(ByValSql)
DimiRs:SetiRs=Execute(Sql)
IfNotiRs.BOFThenExecuteScalar=iRs(0)
EndFunctionPublicFunctionExecuteNonQuery(ByValSql)
OpenConn()
CallConn.Execute(Sql,ExecuteNonQuery)
EndFunctionPublicFunctionInsertSp(ByValSql,ByValParams)
OpenConn()
Rs.OpenSql,Conn,3,3,adCmdStoredProc
Rs.AddNew
Dimi,l
l=UBound(Params)
Fori=1Tol+1
Rs(i)=Params(i-1)
Next
Rs.Update
InsertSp=Rs(0)
EndFunctionPublicFunctionExecuteSp(ByValSpName,ByValParams)
WithCmd
Set.ActiveConnection=OpenConn()
.CommandText=SpName
.CommandType=&H0004