|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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为移动电话互联网客户服务。 |
|