仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 682|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网站制作之通用的asp操纵数据库类

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:44:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。以下是代码:
<%
ClassdbClass
’-------------------------------------------------------------------------
’变量申明
’conn-----------connection工具
’strsql---------实行查询的语句
’vTbName--------查询分页的表名
’vPKey----------查询分页的表的主键
’vPgFields------查询分页要显现的字段
’vPgSize--------查询分页每页显现的纪录数
’vCurrPg--------查询分页显现确当前页
’vConditions----查询分页的前提
’vOrderBy-------查询分页的排序
’-------------------------------------------------------------------------
privateconn,strsql,vTbName,vPKey,vPgFields,vPgSize,vCurrPg,vConditions,vOrderBy
’类的初始化
privateSubClass_Initialize()
’当是MSSql数据库时设置以下两个变量Webjx.Com
’dimdbServer’数据库服务器的称号或ip地点
’dimdbname’数据库的名字
dimdbPath’如果Access数据库,此处设置其路径
dimdbUser’数据库的登任命户名
dimdbPass’数据库的登录暗码
dimconnstr
dbPath="/testasp/data/data.mdb"’设置数据库路径
dbUser="admin"
Webjx.Com

dbPass="123456"
’如果access,而且有暗码
connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(dbPath)&_
";UserID="&dbUser&";Password=;JetOLEDB:DatabasePassword="&dbPass
’如果access,而且没有暗码
’connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(dbPath)
’如果ms-sql数据库
’connstr="Provider=Sqloledb;UserID="&dbUser&";Password="&dbPass&_
’";InitialCatalog="&dbname&";DataSource="&dbServer
Webjx.Com

onerrorresumenext
setconn=server.CreateObject("adodb.connection")
conn.openconnstr
errMsg"毗连数据库"
EndSub
’类停止
PrivateSubClass_terminate()
conn.close
setconn=nothing
EndSub
’-------------------------------------------------------------------------
’给类的变量设置值
’-------------------------------------------------------------------------
’设置sql语句
PublicPropertyLetsqlStr(ByvalValues)
strsql=Values
EndProperty
’设置查询分页的表名
publicpropertylettbName(ByvalValues)

vTbName=Values
endproperty
’--------------------------------------------------------
’设置查询分页的表的主键
publicpropertyletpKey(ByValValues)
vPKey=Values
endproperty
’--------------------------------------------------------
’设置显现的字段
publicpropertyletpgFields(ByValValues)
vPgFields=Values
endproperty
’--------------------------------------------------------
’设置每页显现的纪录数
publicpropertyletpgSize(ByValValues)
vPgSize=Values
endproperty
’---------------------------------------------------------
’设置以后显现的页数
publicpropertyletcurrPg(ByValValues)
vCurrPg=Values
endproperty
’--------------------------------------------------------
’设置查询的前提
publicpropertyletconditions(ByValValues)
ifLen(Values)>0then
vConditions="where"&Values
else
vConditions="where1=1"
endif
endproperty
’-------------------------------------------------------
’设置查询的排序
publicpropertyletorderBy(ByValValues)
ifLen(Values)>0then
vOrderBy="orderby"&Values
else
vOrderBy=Values
endif
endproperty
’-------------------------------------------------------------网页教授教养网
’失掉纪录总数
publicpropertygetvRsCount()
ifvCurrPg=1then
sqlc="selectcount("&vPKey&")asIdcountfrom"&vTbName&""&vConditions
setrsc=server.CreateObject("adodb.recordset")
rsc.opensqlc,conn,0,1
RsNum=rsc("IdCount")
rsc.close
setrsc=nothing
ifRsNum>0then
response.Cookies("iRecord")=RsNum
vRsCount=RsNum
else
vRsCount=0
endif
else
vRsCount=request.Cookies("iRecord")
endif
endproperty
’失掉总页数
publicpropertygetvPgCount()
网页教授教养网

iRsCount2=vRsCount()
ifiRsCount2modvPgSize=0then
vPgCount=int(iRsCount2/vPgSize)
else
vPgCount=int(iRsCount2/vPgSize)+1
endif
endproperty
’查询数据库
PublicFunctionrsDB()
onerrorresumenext
’复杂的查询出了局
’setrsDB=Server.CreateObject("ADODB.RecordSet")
’rsDB.Openstrsql,conn,1,3
SetrsDB=conn.Execute(strsql)
errMsg"查询数据库"
EndFunction
’增加,更新,删除数据库纪录
publicFunctionupDB()
onerrorresumenext
conn.execute(strsql)
errMsg"编纂数据库纪录"
endFunction
’-------------------------------------------------------------------------Webjx.Com
’用来完成分页的纪录集函数
publicfunctionpageRs()
onerrorresumenext
dimstartRs
startRs=(vCurrPg-1)*vPgSize
’-------------------------------------------------------------------------------------------
’利用此语句的话要依据参数修正代码,详细的是若排序为asc则<改成>,min改成max
’ifstartRs=0then
’strsql="selecttop"&vPgSize&""&vPgFields&"from"&vTbName&""&vConditions&""&vOrderBy
’else
’strsql="selecttop"&vPgSize&""&vPgFields&"from"&vTbName&""&vConditions&"and"&vPKey&"<"
’strsql=strsql&"(selectmin("&vPKey&")from(selecttop"&startRs&""&vPKey&"from"Webjx.Com
’strsql=strsql&vTbName&""&vConditions&""&vOrderBy&")asidTable)"&vOrderBy
’endif
’---------------------------------------------------------------
ifstartRs=0then
strsql="selecttop"&vPgSize&""&vPgFields&"from"&vTbName&""&vConditions&""&vOrderBy
else
strsql="selecttop"&vPgSize&""&vPgFields&"from"&vTbName&""&vConditions&"and"&vPKey&"not"
strsql=strsql&"in(selecttop"&startRs&""&vPKey&"from"&vTbName&""&vConditions&""&vOrderBy
strsql=strsql&")"&vOrderBy
Webjx.Com
endif
’-------------------------------------------------------------------
setpageRs=server.CreateObject("adodb.recordset")
pageRs.openstrsql,conn,0,1
errMsg"纪录分页"
endfunction
’------sql用存储历程分页------------------------------------------------------
publicfunctionsqlPage()
onerrorresumenext
SetsqlPage=server.CreateObject("Adodb.RecordSet")
SetCm=Server.CreateObject("Adodb.Command")
Cm.CommandType=4
Cm.ActiveConnection=conn
Cm.CommandText="sp_Util_Page"
Cm.parameters(1)=vPgFields
Cm.parameters(2)=vTbName
Cm.parameters(3)=vConditions
Cm.parameters(4)=vOrderBy
Cm.parameters(5)=vPKey
Cm.parameters(6)=vCurrPg
Cm.parameters(7)=vPgSize
Cm.parameters(8)=vRsCount()
Cm.parameters(9)=""
sqlPage.CursorLocation=3
Webjx.Com

sqlPage.LockType=1
sqlPage.OpenCm
errMsg"纪录分页"
endfunction
’----------------------------------------------------------------------------
’封闭纪录集objRs
’----------------------------------------------------------------------------
PublicFunctioncRs(ByValObjRs)
ObjRs.close()
SetObjRs=Nothing
EndFunction
’----------------------分页的页码导航---------------------------------------
publicfunctionpageNav()
iRsCount=vRsCount()’总纪录数
mypage=vCurrPg’以后页数
PgCount=vPgCount()’总页数
prePage=mypage-1
ifprePage<1then
prePage=1
endif
nextPage=mypage+1
ifnextPage>PgCountthen
nextPage=PgCount
endif
pagestr="<divid=""fy""><spanid=""rpc"">统共有"&iRsCount&"笔记录"&mypage&"/"&PgCount&"</span>"Webjx.Com
pagestr=pagestr&"<ahref=’?currpage=1’class=’aW’>首页</a><ahref=’?currpage="&prePage&"’class=’aW’>前一页</a>"
if(mypage-1)mod4=0then
firstPage=mypage
elseifint((mypage-1)/4)=0then
firstPage=1
else
firstPage=int((mypage-1)/4)*4+1
endif
endPage=firstPage+4
astr=""
fori=firstPagetoendPage
astr=astr&"<ahref=’?currpage="&i&"’"
ifCstr(mypage)=Cstr(i)then
astr=astr&"id=’currP’"
endif
astr=astr&">"&i&"</a>"
ifi>PgCount-1thenexitfor
next
astr=astr&"<ahref=’?currpage="&nextPage&"’class=’aW’>后一页</a><ahref=’?currpage="&PgCount&"’class=’aW’>尾页</a></div>"
pagestr=pagestr&astr
pageNav=pagestr
endfunction
’输入带分页功效的table
FunctionshowTb(ByValTbTil)Webjx.Com
setrsTb=pageRs()’如果存储历程就挪用sqlPage()
tbRs=rsTb.getrows()
cRs(rsTb)
iTblRow=Ubound(tbRs,2)
iTblCol=Ubound(TbTil)
tbStr="<tableborder=’0’cellspacing=’0’cellpadding=’0’><tbody>"
forr1=0toiTblCol
tr1=tr1&"<tdwidth=’"&split(TbTil(r1),"|")(1)&"’>"&split(TbTil(r1),"|")(0)&"</td>"
next
tr1="<tr>"&tr1&"</tr>"
forri=0toiTblRow
forci=0toiTblCol
td=td&"<tdwidth=’"&split(TbTil(ci),"|")(1)&"’>"&tbRs(ci,ri)&"</td>"
next

tr=tr&"<tr>"&td&"</tr>"
td=null
next
TbTil=null
tbRs=null
response.Write(tbStr&tr1&tr&"<tr><tdcolspan=’"&iTblCol+1&"’>"&pageNav()&"</td></tr></tbody></table>")
tbStr=null
tr1=null
tr=null
EndFunction
’打印sql语句,以便语句有毛病时反省
PublicSubprnSql()
response.Write(strsql)
EndSub
’-------------------------------------------------------------------------
’容错函数
’-------------------------------------------------------------------------
PrivateFunctionerrMsg(errMsg)

IfErr.number0Then
’呈现成绩可使用此处代码打印出形貌信息,便利调试。可正文失落
response.Write(Cstr(Err.description)&"<br>")
Err.Clear
Response.Write"<fontcolor=’#FF0000’>"&errMsg&"堕落</font>"’正文
Response.End()
EndIf
EndFunction
’-------------------------------------------------------------------------
’容错函数停止
’-------------------------------------------------------------------------
EndClass
%>
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-19 22:07:43 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
只想知道 该用户已被删除
板凳
发表于 2015-1-28 13:28:50 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-5 21:37:53 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-13 17:05:21 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
柔情似水 该用户已被删除
6#
发表于 2015-3-11 14:57:39 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
再见西城 该用户已被删除
7#
发表于 2015-3-19 00:31:58 | 只看该作者
掌握asp的特性而且一定要知道为什么。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-26 23:16:19 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 22:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表