推荐:谈用asp编写类似搜索引擎功能的代码首先建一个access 数据库,库中有一个URLINDEX表,其中URL和Keywords字段分别添加了索引,如下: 以下为引用的内容:URL 文本 (索引
数据库操作类在网上一搜一大把,我这并不比那些好,只是是自己写的,用着更习惯。所以我这个类没有什么特别的地方,只是自己用着习惯罢了,至于效率等方面,欢迎赐教!!
程序代码:
| 以下为引用的内容: <% Class dbClass '------------------------------------------------------------------------- '变量说明 'conn-----------connection对象 'strsql---------执行查询的语句 'vTbName--------查询分页的表名 'vPKey----------查询分页的表的主键 'vPgFields------查询分页要显示的字段 'vPgSize--------查询分页每页显示的记录数 'vCurrPg--------查询分页显示的当前页 'vConditions----查询分页的条件 'vOrderBy-------查询分页的排序 '------------------------------------------------------------------------- private conn,strsql,vTbName,vPKey,vPgFields,vPgSize,vCurrPg,vConditions,vOrderBy '类的初始化 private Sub Class_Initialize() '当是MS Sql数据库时设置以下两个变量 'dim dbServer '数据库服务器的名称或ip地址 'dim dbname '数据库的名字 dim dbPath '若是Access数据库,此处设置其路径 dim dbUser '数据库的登录用户名 dim dbPass '数据库的登录密码 dim connstr dbPath = /testasp/data/data.mdb '设置数据库路径 dbUser = admin dbPass = 123456 '若是access,并且有密码 connstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & Server.MapPath(dbPath) &_ ;User ID= & dbUser & ;Password=;Jet OLEDB:Database Password= & dbPass '若是access,并且没有密码 'connstr = Provider = Microsoft.Jet.OLEDB.4.0;Data Source = & Server.MapPath(dbPath) '若是ms-sql数据库 'connstr = Provider = Sqloledb; User ID = & dbUser & ; Password = & dbPass &_ ' ; Initial Catalog = & dbname & ; Data Source = & dbServer on error resume next set conn=server.CreateObject(adodb.connection) conn.open connstr errMsg 连接数据库 End Sub '类结束 Private Sub Class_terminate() conn.close set conn=nothing End Sub '------------------------------------------------------------------------- '给类的变量设置值 '------------------------------------------------------------------------- '设置sql语句 Public Property Let sqlStr(Byval Values) strsql=Values End Property '设置查询分页的表名 public property let tbName(Byval Values) vTbName=Values end property '-------------------------------------------------------- '设置查询分页的表的主键 public property let pKey(ByVal Values) vPKey=Values end property '-------------------------------------------------------- '设置显示的字段 public property let pgFields(ByVal Values) vPgFields=Values end property '-------------------------------------------------------- '设置每页显示的记录数 public property let pgSize(ByVal Values) vPgSize=Values end property '--------------------------------------------------------- '设置当前显示的页数 public property let currPg(ByVal Values) vCurrPg=Values end property '-------------------------------------------------------- '设置查询的条件 public property let conditions(ByVal Values) if Len(Values)>0 then vConditions= where &Values else vConditions= where 1=1 end if end property '------------------------------------------------------- '设置查询的排序 public property let orderBy(ByVal Values) if Len(Values)>0 then vOrderBy= order by &Values else vOrderBy=Values end if end property '------------------------------------------------------------- '得到记录总数 public property get vRsCount() if vCurrPg=1 then sqlc=select count(&vPKey&) as Idcount from &vTbName& &vConditions set rsc=server.CreateObject(adodb.recordset) rsc.open sqlc,conn,0,1 RsNum=rsc(IdCount) rsc.close set rsc=nothing if RsNum>0 then response.Cookies(iRecord)=RsNum vRsCount=RsNum else vRsCount=0 end if else vRsCount=request.Cookies(iRecord) end if end property '得到总页数 public property get vPgCount() iRsCount2=vRsCount() if iRsCount2 mod vPgSize =0 then vPgCount=int(iRsCount2/vPgSize) else vPgCount=int(iRsCount2/vPgSize) 1 end if end property '查询数据库 Public Function rsDB() on error resume next '简单的查询出结果 ' set rsDB = Server.CreateObject(ADODB.RecordSet) ' rsDB.Open strsql,conn,1,3 Set rsDB=conn.Execute(strsql) errMsg 查询数据库 End Function '添加,更新,删除数据库记录 public Function upDB() on error resume next conn.execute(strsql) errMsg 编辑数据库记录 end Function '------------------------------------------------------------------------- '用来实现分页的记录集函数 public function pageRs() on error resume next dim startRs startRs=(vCurrPg-1)*vPgSize '------------------------------------------------------------------------------------------- '使用此语句的话要根据参数修改代码,具体的是若排序为asc则<改为>,min改为max ' if startRs=0 then ' strsql=select top &vPgSize& &vPgFields& from &vTbName& &vConditions& &vOrderBy ' else ' strsql=select top &vPgSize& &vPgFields& from &vTbName& &vConditions& and &vPKey& < ' strsql=strsql&(select min(&vPKey&) from (select top &startRs& &vPKey& from ' strsql=strsql&vTbName& &vConditions& &vOrderBy&) as idTable) &vOrderBy ' end if '--------------------------------------------------------------- if startRs=0 then strsql=select top &vPgSize& &vPgFields& from &vTbName& &vConditions& &vOrderBy else strsql=select top &vPgSize& &vPgFields& from &vTbName& &vConditions& and &vPKey& not strsql=strsql&in (select top &startRs& &vPKey& from &vTbName& &vConditions& &vOrderBy strsql=strsql&) &vOrderBy end if '------------------------------------------------------------------- set pageRs=server.CreateObject(adodb.recordset) pageRs.open strsql,conn,0,1 errMsg 记录分页 end function '------sql用存储过程分页------------------------------------------------------ public function sqlPage() on error resume next Set sqlPage=server.CreateObject(Adodb.RecordSet) Set Cm=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 sqlPage.LockType = 1 sqlPage.Open Cm errMsg 记录分页 end function '---------------------------------------------------------------------------- '关闭记录集objRs '---------------------------------------------------------------------------- Public Function cRs(ByVal ObjRs) ObjRs.close() Set ObjRs = Nothing End Function '----------------------分页的页码导航--------------------------------------- public function pageNav() iRsCount=vRsCount()'总记录数 mypage=vCurrPg'当前页数 PgCount=vPgCount()'总页数 prePage=mypage-1 if prePage<1 then prePage=1 end if nextPage=mypage 1 if nextPage>PgCount then nextPage=PgCount end if pagestr=<div id=fy><span id=rpc>总共有&iRsCount&条记录 &mypage&/&PgCount&</span> pagestr=pagestr&<a href='?currpage=1' class='aW'>首页</a><a href='?currpage=&prePage&' class='aW'>前一页</a> if (mypage-1) mod 4=0 then firstPage=mypage elseif int((mypage-1)/4)=0 then firstPage=1 else firstPage=int((mypage-1)/4)*4 1 end if endPage=firstPage 4 astr= for i=firstPage to endPage astr=astr&<a href='?currpage=&i&' if Cstr(mypage)=Cstr(i) then astr=astr& id='currP' end if astr=astr&>&i&</a> if i>PgCount-1 then exit for next astr=astr&<a href='?currpage=&nextPage&' class='aW'>后一页</a><a href='?currpage=&PgCount&' class='aW'>尾页</a></div> pagestr=pagestr&astr pageNav=pagestr end function '输出带分页功能的table Function showTb(ByVal TbTil) set rsTb=pageRs()'若是存储过程就调用sqlPage() tbRs= rsTb.getrows() cRs(rsTb) iTblRow=Ubound(tbRs,2) iTblCol=Ubound(TbTil) tbStr=<table border='0' cellspacing='0' cellpadding='0'><tbody> for r1=0 to iTblCol tr1=tr1&<td width='&split(TbTil(r1),|)(1)&'>&split(TbTil(r1),|)(0)&</td> next tr1=<tr>&tr1&</tr> for ri=0 to iTblRow for ci=0 to iTblCol td=td&<td width='&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><td colspan='&iTblCol 1&'>&pageNav()&</td></tr></tbody></table>) tbStr=null tr1=null tr=null End Function '打印sql语句,以便语句有错误时检查 Public Sub prnSql() response.Write(strsql) End Sub '------------------------------------------------------------------------- '容错函数 '------------------------------------------------------------------------- Private Function errMsg(errMsg) If Err.number<>0 Then '出现问题可利用此处代码打印出描述信息,方便调试。可注释掉 response.Write(Cstr(Err.description)&<br>) Err.Clear Response.Write <font color='#FF0000'>&errMsg&出错</font> '注释 Response.End() End If End Function '------------------------------------------------------------------------- '容错函数结束 '------------------------------------------------------------------------- End Class %> |
分享:FileSystemObject 示例代码在本节描述的示例代码,提供真实的例子来示范在 FileSystemObject 对象模式中可用的许多功能。该代码显示了如何一起使用对象模式的所有功能,以及如何在您自己的代码中有效地使用这些功能