ASP教程:自己写的数据库操作类
来源:webjx.com 发布时间:2008-11-21 17:29:00
数据库操作类在网上一搜一大把,我这并不比那些好,只是是自己写的,用着更习惯。所以我这个类没有什么特别的地方,只是自己用着习惯罢了,至于效率等方面,欢迎赐教!!
程序代码:
<%
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
%>


猜你喜欢
- 业务需求 识别验证码图片中的数字信息,用pyt
- 如何在Typescript中使用for...in ?本人在TS中用for...in出现了些问题,也想到了一些解决方法。那么先来看看下面报错的
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN&q
- 本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关。本文章是自己学习的一些记
- ASP给图片加水印是需要组件的...常用的有aspjpeg软件和中国人自己开发的wsImage软件,可以上网搜索下载这两个软件,推荐使用咱们
- 直接代码data_arr = []data = iter_files(dir,speakers)for k,v in data.items(
- 在 Facebook 上有一个彩蛋:登录 facebook.com ,点击你首页的任何地方,键盘输入 Up, Up, Down, Down,
- <?php /********************************************** *&n
- 不过由于手机的参数多,且不同的手机其参数差异大,所以参数表结构通常是纵表(一个参数是一行),而不是横表(一个参数是一列),此时使用若干参数来
- Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有
- 简介Github:https://github.com/spf13/cobraStar:26.5KCobra是一个用Go语言实现的命令行工具
- python操纵mysql数据库,向一个表中插入一条新的记录。pycahrm提供一个很好的功能,在右边上面,可以连接数据库,并在里面手动操作
- 一、类型转换 1.转换成字串 ECMAScript的Boolean值、数字和字串的原始值的有趣之处在于它们是伪对象,这意味着它们实际上具有属
- 有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值。典型的例子就是一个银行账户,因为你每一次都是在不同的时间
- python爬虫模块Request的安装在cmd中,使用如下指令安装requests:pip install requestspython爬
- python 如何获取文件夹中的全部文件在神经网络准备训练集的时候,经常需要从文件夹中读取全部图片。经常遇到的有两种方式1 os.listd
- 本次做一个最简单的贪食蛇雏形游戏,就是一个小蛇在画面上移动,我们可以控制蛇的移动方向,但是不能吃东西,蛇不会长大。但是基础的有了,完整版的贪
- 废话不多说,大家直接看代码吧!"""遗传算法实现求函数极大值—Zjh"""imp
- Python 2.x 很快就要 失去官方支持 了,尽管如此,从 Python 2 迁移到 Python 3 却并没有想象中那么难。我在上周用
- Python是一个非常实用、流行的解释型编程语言,其优势之一就是可以借助其交互的shell进行探索式地编程。你可以试着输入一些代码,然后马上