一个ACCESS数据库访问的类第1/3页
一个ACCESS数据库访问的类第1/3页
发布时间:2016-12-29 来源:查字典编辑
摘要:大部分ASP应用,都离不开对数据库的访问及操作,所以,对于数据库部分的访问操作,我们应该单独抽象出来,封装成一个单独的类。如果所用语言支持继...

大部分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

.Prepared=True

SetExecuteSp=.Execute(,Params)

EndWith

EndFunctionPublicFunctionExecuteDataTableSp(ByValSpName,ByValParams)

OpenConn()

IfRs.State<>adStateCloseThen

Rs.Close()

EndIf

DimSpStr

IfIsNull(Params)OrIsEmpty(Params)Then

SpStr=SpName

Else

IfIsArray(Params)Then

SpStr="Execute"&SpName&""&Join(Params,",")

Else

SpStr="Execute"&SpName&""&Params

EndIf

EndIf

CallRs.Open(SpStr,Conn,1,1,adCmdStoredProc)

SetExecuteDataTableSp=Rs

EndFunctionPublicFunctionExecuteScalarSp(ByValSpName,ByValParams)

DimiRs:SetiRs=ExecuteSp(SpName,Params)

IfNotiRs.BOFThenExecuteScalarSp=iRs(0)

EndFunctionPublicFunctionExecuteNonQuerySp(ByValSpName,ByValParams)

WithCmd

Set.ActiveConnection=OpenConn()

.CommandText=SpName

.CommandType=&H0004

.Prepared=True

Call.Execute(ExecuteNonQuerySp,Params)

EndWith

EndFunctionPrivateSubClass_Initialize()

SetConn=Server.CreateObject("ADODB.Connection")

SetCmd=Server.CreateObject("ADODB.Command")

SetParam=Server.CreateObject("ADODB.Parameter")

SetRs=Server.CreateObject("ADODB.RecordSet")

DataPath="/data/data.mdb"'这里写你的数据库默认路径,建议更改名称及扩展名

EndSub

PrivateSubClass_Terminate()

SetParam=Nothing

SetCmd=Nothing

CloseRs()

CloseConn()

EndSubPrivateSubCloseConn()

IfConn.State<>adStateCloseThen

Conn.Close()

SetConn=Nothing

EndIf

EndSubPrivateSubCloseRs()

IfRs.State<>adStateCloseThen

Rs.Close()

SetRs=Nothing

EndIf

EndSubEndClass

%>

当前1/3页123下一页阅读全文

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新ASP教程学习
热门ASP教程学习
编程开发子分类