1<%
  2Class dbClass
  3'-------------------------------------------------------------------------
  4    '变量说明
  5    'conn-----------connection对象
  6    'strsql---------执行查询的语句
  7    'vTbName--------查询分页的表名
  8    'vPKey----------查询分页的表的主键
  9    'vPgFields------查询分页要显示的字段
 10    'vPgSize--------查询分页每页显示的记录数
 11    'vCurrPg--------查询分页显示的当前页
 12    'vConditions----查询分页的条件
 13    'vOrderBy-------查询分页的排序
 14'-------------------------------------------------------------------------
 15    private conn,strsql,vTbName,vPKey,vPgFields,vPgSize,vCurrPg,vConditions,vOrderBy
 16    '类的初始化
 17    private Sub Class_Initialize()
 18        '当是MS Sql数据库时设置以下两个变量 
 19        'dim dbServer            '数据库服务器的名称或ip地址
 20        'dim dbname              '数据库的名字
 21        dim dbPath              '若是Access数据库,此处设置其路径
 22        dim dbUser              '数据库的登录用户名
 23        dim dbPass              '数据库的登录密码
 24        dim connstr
 25        dbPath = "/testasp/data/data.mdb" '设置数据库路径
 26        dbUser = "admin" 
 27        dbPass = "123456"
 28        '若是access,并且有密码
 29        connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbPath) &_
 30         ";User ID=" & dbUser & ";Password=;Jet OLEDB:Database Password=" & dbPass
 31        '若是access,并且没有密码
 32        'connstr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(dbPath)
 33        '若是ms-sql数据库
 34        'connstr = "Provider = Sqloledb; User ID = " & dbUser & "; Password = " & dbPass &_
 35        ' "; Initial Catalog = " & dbname & "; Data Source = " & dbServer 
 36        on error resume next
 37        set conn=server.CreateObject("adodb.connection")
 38        conn.open connstr
 39        errMsg "连接数据库"
 40    End Sub
 41    '类结束
 42    Private Sub Class_terminate()
 43        conn.close
 44        set conn=nothing
 45    End Sub
 46'-------------------------------------------------------------------------
 47'给类的变量设置值
 48'-------------------------------------------------------------------------    
 49    '设置sql语句
 50    Public Property Let sqlStr(Byval Values)
 51    strsql=Values
 52    End Property
 53    '设置查询分页的表名
 54    public property let tbName(Byval Values) 
 55    vTbName=Values
 56    end property
 57    '--------------------------------------------------------
 58    '设置查询分页的表的主键
 59    public property let pKey(ByVal Values)
 60    vPKey=Values
 61    end property
 62    '--------------------------------------------------------
 63    '设置显示的字段
 64    public property let pgFields(ByVal Values)
 65    vPgFields=Values
 66    end property
 67    '--------------------------------------------------------
 68    '设置每页显示的记录数
 69    public property let pgSize(ByVal Values)
 70    vPgSize=Values
 71    end property
 72    '---------------------------------------------------------
 73    '设置当前显示的页数
 74    public property let currPg(ByVal Values) 
 75    vCurrPg=Values
 76    end property
 77    '--------------------------------------------------------
 78    '设置查询的条件
 79    public property let conditions(ByVal Values)
 80    if Len(Values)>0 then
 81    vConditions=" where "&Values
 82    else
 83    vConditions=" where 1=1 "
 84    end if
 85    end property
 86    '-------------------------------------------------------
 87    '设置查询的排序
 88    public property let orderBy(ByVal Values)
 89    if Len(Values)>0 then
 90    vOrderBy=" order by "&Values
 91    else
 92    vOrderBy=Values
 93    end if
 94    end property    
 95    '------------------------------------------------------------- 
 96    '得到记录总数
 97    public property get vRsCount()
 98    if vCurrPg=1 then
 99    sqlc="select count("&vPKey&") as Idcount from "&vTbName&" "&vConditions
100    set rsc=server.CreateObject("adodb.recordset")
101    rsc.open sqlc,conn,0,1
102    RsNum=rsc("IdCount")
103    rsc.close
104    set rsc=nothing
105    if RsNum>0 then
106    response.Cookies("iRecord")=RsNum
107    vRsCount=RsNum
108    else
109    vRsCount=0
110    end if
111    else
112    vRsCount=request.Cookies("iRecord")
113    end if
114    end property
115    '得到总页数
116    public property get vPgCount() 
117    iRsCount2=vRsCount()
118    if iRsCount2 mod vPgSize =0 then
119    vPgCount=int(iRsCount2/vPgSize)
120    else
121    vPgCount=int(iRsCount2/vPgSize)+1
122    end if
123    end property
124'查询数据库
125    Public Function rsDB()
126    on error resume next
127    '简单的查询出结果
128'     set rsDB = Server.CreateObject("ADODB.RecordSet")
129'     rsDB.Open strsql,conn,1,3 
130    Set rsDB=conn.Execute(strsql)
131    errMsg "查询数据库"
132    End Function
133'添加,更新,删除数据库记录
134    public Function upDB()
135    on error resume next
136    conn.execute(strsql)
137    errMsg "编辑数据库记录"
138    end Function
139'------------------------------------------------------------------------- 
140'用来实现分页的记录集函数
141    public function pageRs()
142    on error resume next
143    dim startRs
144    startRs=(vCurrPg-1)*vPgSize
145    '-------------------------------------------------------------------------------------------
146    '使用此语句的话要根据参数修改代码,具体的是若排序为asc则<改为>,min改为max
147'    if startRs=0 then
148'    strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" "&vOrderBy
149'    else
150'    strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" and "&vPKey&" < "
151'    strsql=strsql&"(select min("&vPKey&") from (select top "&startRs&" "&vPKey&" from " 
152'    strsql=strsql&vTbName&" "&vConditions&" "&vOrderBy&") as idTable) "&vOrderBy
153'    end if
154    '---------------------------------------------------------------
155    if startRs=0 then
156    strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" "&vOrderBy
157    else
158    strsql="select top "&vPgSize&" "&vPgFields&" from "&vTbName&" "&vConditions&" and "&vPKey&" not "
159    strsql=strsql&"in (select top "&startRs&" "&vPKey&" from "&vTbName&" "&vConditions&" "&vOrderBy
160    strsql=strsql&") "&vOrderBy 
161    end if
162    '-------------------------------------------------------------------
163    set pageRs=server.CreateObject("adodb.recordset")
164    pageRs.open strsql,conn,0,1
165    errMsg "记录分页"
166    end function
167'------sql用存储过程分页------------------------------------------------------
168public function sqlPage()
169on error resume next
170Set sqlPage=server.CreateObject("Adodb.RecordSet")
171Set Cm=Server.CreateObject("Adodb.Command")
172Cm.CommandType = 4
173Cm.ActiveConnection = conn
174Cm.CommandText="sp_Util_Page"
175Cm.parameters(1) = vPgFields
176Cm.parameters(2) = vTbName
177Cm.parameters(3) = vConditions
178Cm.parameters(4) = vOrderBy
179Cm.parameters(5) = vPKey
180Cm.parameters(6) = vCurrPg
181Cm.parameters(7) = vPgSize
182Cm.parameters(8) = vRsCount()
183Cm.parameters(9) = ""
184sqlPage.CursorLocation = 3 
185sqlPage.LockType = 1
186sqlPage.Open Cm
187errMsg "记录分页"
188end function
189'----------------------------------------------------------------------------
190'关闭记录集objRs
191'----------------------------------------------------------------------------
192    Public Function cRs(ByVal ObjRs)
193    ObjRs.close()
194    Set ObjRs = Nothing
195    End Function
196'----------------------分页的页码导航---------------------------------------
197public function pageNav()
198iRsCount=vRsCount()'总记录数
199mypage=vCurrPg'当前页数
200PgCount=vPgCount()'总页数
201prePage=mypage-1
202if prePage<1 then
203prePage=1
204end if
205nextPage=mypage+1
206if nextPage>PgCount then
207nextPage=PgCount
208end if
209pagestr="<div id=""fy""><span id=""rpc"">总共有"&iRsCount&"条记录 "&mypage&"/"&PgCount&"</span>" 
210pagestr=pagestr&"<a href='?currpage=1' class='aW'>首页</a><a href='?currpage="&prePage&"' class='aW'>前一页</a>"
211if (mypage-1) mod 4=0 then
212firstPage=mypage
213elseif int((mypage-1)/4)=0 then
214firstPage=1
215else
216firstPage=int((mypage-1)/4)*4+1
217end if
218endPage=firstPage+4
219astr=""
220for i=firstPage to endPage
221astr=astr&"<a href='?currpage="&i&"'"
222if Cstr(mypage)=Cstr(i) then
223astr=astr&" id='currP'"
224end if
225astr=astr&">"&i&"</a>"
226if i>PgCount-1 then exit for
227next
228astr=astr&"<a href='?currpage="&nextPage&"' class='aW'>后一页</a><a href='?currpage="&PgCount&"' class='aW'>尾页</a></div>"
229pagestr=pagestr&astr
230pageNav=pagestr
231end function
232'输出带分页功能的table
233Function showTb(ByVal TbTil) 
234    set rsTb=pageRs()'若是存储过程就调用sqlPage()
235    tbRs= rsTb.getrows()
236    cRs(rsTb)
237    iTblRow=Ubound(tbRs,2)
238    iTblCol=Ubound(TbTil)
239    tbStr="<table border='0' cellspacing='0' cellpadding='0'><tbody>"
240    for r1=0 to iTblCol
241      tr1=tr1&"<td width='"&split(TbTil(r1),"|")(1)&"'>"&split(TbTil(r1),"|")(0)&"</td>"
242    next
243    tr1="<tr>"&tr1&"</tr>"
244    for ri=0 to iTblRow
245      for ci=0 to iTblCol
246        td=td&"<td width='"&split(TbTil(ci),"|")(1)&"'>"&tbRs(ci,ri)&"</td>"
247      next 
248      tr=tr&"<tr>"&td&"</tr>"
249      td=null
250    next
251    TbTil=null
252    tbRs=null
253    response.Write(tbStr&tr1&tr&"<tr><td colspan='"&iTblCol+1&"'>"&pageNav()&"</td></tr></tbody></table>")
254    tbStr=null
255    tr1=null
256    tr=null
257End Function
258'打印sql语句,以便语句有错误时检查
259    Public Sub prnSql()
260        response.Write(strsql)
261    End Sub
262'-------------------------------------------------------------------------    
263'容错函数
264'-------------------------------------------------------------------------
265     Private Function errMsg(errMsg) 
266     If Err.number<>0 Then
267     '出现问题可利用此处代码打印出描述信息,方便调试。可注释掉
268     response.Write(Cstr(Err.description)&"<br>")
269     Err.Clear
270     Response.Write "<font color='#FF0000'>"&errMsg&"出错</font>" '注释
271     Response.End()
272     End If
273     End Function
274'-------------------------------------------------------------------------
275'容错函数结束
276'-------------------------------------------------------------------------
277End Class
278%>

我的想法是既然是数据库操作类,所以类一实例化的时候就建立数据库连接,所以在使用的时候要先修改 Class_Initialize()中的代码,设置正确的数据库连接数据,设置好了就可以使用了。

1、一般的操作

set myDb=new dbClass
   myDb.sqlStr="select * from ..."        '这里设置数据库操作语句
   set rs=myDb.rsDB()
'这里返回rs,接着就按平时的写法写表现数据的代码
'.......
   myDb.cRs(rs) '关闭释放rs
   set myDb=nothing

若myDb.sqlStr设置的是更新、删除或添加的sql语句,那么就要用myDb.upDB()来执行,即

set myDb=new dbClass
myDb.sqlStr="update ..."
myDb.upDB()
set myDb=nothing

转载于:https://www.cnblogs.com/voswin/articles/1282503.html

[收藏]ASP数据库操作类(上)相关推荐

  1. 基于javascript的asp数据库操作类,含分页、字符串截取、用户登陆验证[原创]

    2005.01.15发表于blog.csdn.net/zxub 无聊又用了用asp,发现还是不爽,已经习惯了面向对象了,就想改进了,vbscript不用,感觉看起来很不爽,就用javascript写了 ...

  2. 我积累的数据库操作类(ASP.NET)

    http://guanvee.cnblogs.com/archive/2006/06/16/427510.html http://guanvee.cnblogs.com/archive/2006/06 ...

  3. mysql的数据库操作类_MYSQL数据库操作类

    class MSSQLDB { //MYSQL数据库操作类 //使用说明: //该类完全按照ADO的习惯书写的,用过ASP的人都觉得ASP连接数据库比PHP好用(这是我的感觉), //但PHP得一个一 ...

  4. asp数据库操作大全 [网站网页]

    什么叫活动服务器组件(Active Server Compontents)?组件是基于Activex技术的代码片断,通过指定接口提供指定的一组服务,组件供给客户端(Clients)在运行时候请求的对象 ...

  5. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例

    本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...

  6. SqlHelper 数据库操作类

    sqlHelper.cs Code using System.Data; using System.Data.SqlClient; namespace lsb.DBUtility {     ///  ...

  7. mysql 数据库操作类_【数据库操作类】10个php操作数据库类下载

    数据库(Database)操作是在开发过程中重要的组成部分,熟练掌握数据库的操作是开发人员必备的武器.PHP中文网为大家提供了各种封装好的php数据库操作类库,供大家下载和学习. 相关mysql视频教 ...

  8. 一个简单而又灵活的数据库操作类

    一个简单而又灵活的数据库操作类 作者: 紫瑗 ***************************************************************************** ...

  9. 艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

    本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数 ...

最新文章

  1. 联想拯救者r720适合java么_联想拯救者哪个型号好 联想拯救者r720怎么样【详解】...
  2. @getMapping与@postMapping
  3. mpvue 调起子组件的方法_牢记 | 智鹏五金机电设备这些方法的使用更安全!
  4. azure 使用_如何使用命令行和Azure自动执行任务
  5. 子集数据帧中的丢包因子级别
  6. 标准模型和IE模型的区别
  7. mysql-5.7安装、配置
  8. 机器学习——随机森林算法及原理
  9. 第一道web类CTF题——一起来撸猫
  10. android-x86 地图,android 手机客户端百度地图 x86的jar包需要吗
  11. 读书笔记—中国跑步指南
  12. Channel实现原理分析
  13. 代码设置桌面壁纸或者屏保
  14. 用纯CSS写一个左右滑动的开关按钮
  15. 3.4.11nbsp;拉里·埃里森
  16. canal - 数据同步工具
  17. 围绕开放标准改进WSO2 API Manager密钥管理体系结构
  18. 什么是大数据?漫谈大数据仓库与挖掘系统
  19. 为什么输入百度的IP地址不能直接访问
  20. 如何轻松地的现货白银中预测走势?

热门文章

  1. 2017CCPC哈尔滨 H:A Simple Stone Game
  2. bzoj 1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会(Trajan)
  3. bzoj 1623: [Usaco2008 Open]Cow Cars 奶牛飞车(贪心)
  4. poj 3278 bzoj 1646: [Usaco2007 Open]Catch That Cow 抓住那只牛(BFS)
  5. 图像识别讲解 以一个简单的图像识别任务为例
  6. 根据图像连接数判别不同像素所处的位置
  7. swagger入门和实践(含docker部署swagger)
  8. hdu 1176 免费馅饼(nyist 613)
  9. TypeError: unorderable types: str() = int()
  10. 获取IP及判断IP是否在区间