网络编程
位置:首页>> 网络编程>> Asp编程>> ASP教程:自己写的数据库操作类

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
%>

0
投稿

猜你喜欢

  • 1、动态sql, 即动态参数:在存储过程中,想要直接用表名变量做参数,动态执行sql,不能直接写<P>create proced
  • 在安装SQL Server 2000 ,安装进程自动地为&ldquo;BUILTIN\Administrators&rdqu
  • Update Scanner这个Firefox附加软件也是一种很好的选择。Update Scanner可以同时跟踪多个网页,并为不同的网页设
  • 就服务器端处理而言,ASP是产生动态Web网页的一种相对较新的技术。动态页意味着什么呢?先暂时不考虑客户端相关功能上的进展,也不讨论客户端脚
  • 如果你的PHP网站换了空间,必定要对Mysql数据库进行转移,一般的转移的方法,是备份再还原,有点繁琐,而且由于数据库版本的不一样会导致数据
  • SQL Server与Oracle、DB2的优劣对比:1.开放性:SQL Server只能在Windows上运行,没有丝毫的开放性,操作系统
  • 总的来说,提高应用程序性能的最好的方法是发现应用的瓶径之所在,和数据库进行交互的性能无疑是决定应用程序性能的重要环节之一。因为ADO是当前最
  • 继续我们的 Javascript 优化计划,上期已经做到怎么尽可能的缩小 Javascript 脚本的文件体积便于传输。不过这样做仅仅是不够
  • 在sql语句后使用 SCOPE_IDENTITY() 当然您也可以使用 SELECT @@IDENTITY 但是使用 SELECT @@ID
  • 如何用SysOjects来获知数据库的信息?SysObjects中就保存了数据库中所有对象的信息,如:SELECT * FROM SysOb
  •    这个代表显示宽度整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系
  • 下面这段代码是asp编写的用来识别客户端是否为手机浏览器,以及手机类型的代码。主要用于手机网站的建设,以便实现相同网址下的不同版本网站(比如
  • 数据库系统的安全性包括很多方面。由于很多情况下,数据库服务器容许客户机从网络上连接,因此客户机连接的安全对MySQL数据库安全有很重要的影响
  • 在浏览天极RSS订阅页面时,可以看到天极网为方便用户定制站点内容而设立的各个RSS频道。浏览者通过订阅不同的RSS(可同时订阅多个网站),就
  • 一、Browser Capabilities组件 该组件最主要的作用是:提取识别客户端浏览器的版本信息。其原理是这样的:当客户端浏览器向服务
  • 最近试用mysql proxy,遇到若干问题,好在一一找到了解决方案,列出来备忘。这次使用的版本是0.6.x,也许新版本就没有这些问题了。无
  • 对于access数据库的日期时间类型字段存储的日期,直接从数据库中读出显示的效果是带时间的如,2009-06-13 18:00 ,如果只是希
  • HTML 5基本思维概念形成于2003年,之后W3C对页面超文本应用技术工作小组(WHATWG)开发的HTML草图颇感兴趣,这个小组的开发人
  • 随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高。操作系统的稳定对数据库来说是十分紧要的,在数据库可操作
  • 也许有人会说我火星了,但我的确是第一次知道,欢迎我从火星归来吧。在 Yahoo! 首页上隐藏着这样一个小秘密,大家到 www.yahoo.c
手机版 网络编程 asp之家 www.aspxhome.com