网络编程
位置:首页>> 网络编程>> Asp编程>> asp_数据库操作封装

asp_数据库操作封装

 来源:asp之家 发布时间:2010-04-03 21:00:00 

标签:数据库,函数,封装,asp

一、conn.asp

<%
  '@Language="VBSCRIPT" CODEPAGE=65001   
  'meta http-equiv="Content-Type" content="text/html; charset=gb2312"   
  ' 936  utf-8 
  class TDB
    function qry(byval sqlquery) 
      dim adoConn,adoRS
      set adoConn=server.createobject("ADODB.connection")
      adoConn.open "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath(".")  & "/sys.mdb"   
      set adoRS=server.createobject("ADODB.RecordSet")
      adoRS.open sqlquery,adoConn,1,3   'support movelast   (adOpenKeySet,adLockOptimistic)
      'set adoRS=adoConn.execute(sqlquery)    'don't support movelast
      '
      dim rtnstr
      rtnstr="<?xml version='1.0' encoding='gb2312' standalone='yes' ?>" & chr(13)& chr(10)
      rtnstr=rtnstr & "<rs>"  & chr(13)& chr(10)
      irow=0
      adoRS.movefirst
      do while not adoRS.Eof
        rtnstr=rtnstr & "  <r" & cstr(irow) & ">"  & chr(13)& chr(10)
        for i=0 to adoRS.Fields.Count-1
          rtnstr=rtnstr & "    <" & adoRS.Fields(i).name & ">" & chr(13)& chr(10)
          rtnstr=rtnstr & "<![CDATA[ " & adoRS.Fields(i) & " ]]>" & chr(13)& chr(10)
          rtnstr=rtnstr & "    </" & adoRS.Fields(i).name & ">" & chr(13)& chr(10)
        next
        rtnstr=rtnstr & "  </r" & cstr(irow) & ">"  & chr(13)& chr(10)
        irow=irow+1
        adoRS.movenext
      loop
      rtnstr=rtnstr & "</rs>"
      '
      adoRS.Close
      adoConn.Close
      set adoRS=nothing
      set adoConn=nothing
      qry=rtnstr
    end function
    function qrybypage_xml(byval sqlquery,byval ipage,byval ipagesize) 
      dim adoConn,adoRS,iCounts,iPagecounts,iStartPos,iEndPos
      set adoConn=server.createobject("ADODB.connection")
      adoConn.open "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath(".")  & "/sys.mdb"   
      set adoRS=server.createobject("ADODB.RecordSet")
      adoRS.open sqlquery,adoConn,1,3   'support movelast   (adOpenKeySet,adLockOptimistic)
      'check cur page
      if ipage<=0 then ipage=1
      adoRS.movelast
      iCounts=adoRS.RecordCount
      iPagecounts = (iCounts - 1) \ ipagesize + 1   'page counts, good job!  vb all div=\ not /
      if ipage>iPagecounts then ipage=iPagecounts
      'get start pos,end pos
      iStartPos = (ipage - 1) * ipagesize
      iEndPos = iStartPos + ipagesize-1
      if (iEndPos > iCounts-1) then iEndPos = iCounts-1    'last page no full page
      '
      dim rtnstr
      rtnstr="<?xml version='1.0' encoding='gb2312' standalone='yes' ?>" & chr(13)& chr(10)
      rtnstr=rtnstr & "<pageinfo>" & chr(13)& chr(10)
      rtnstr=rtnstr & "  <counts>" & cstr(iCounts) & "</counts>" & chr(13)& chr(10)
      rtnstr=rtnstr & "  <pages>" & cstr(iPagecounts) & "</pages>" & chr(13)& chr(10)
      rtnstr=rtnstr & "  <page>" & cstr(ipage) & "</page>" & chr(13)& chr(10)
      rtnstr=rtnstr & "  <pagesize>" & cstr(ipagesize) & "</pagesize>" & chr(13)& chr(10)
      rtnstr=rtnstr & "</pageinfo>" & chr(13)& chr(10)
      '
      rtnstr=rtnstr & "<rs>"  & chr(13)& chr(10)
      irow=0
      adoRS.movefirst
      do while not adoRS.Eof
        if irow>=iStartPos and irow<=iEndPos then
          rtnstr=rtnstr & "  <r" & cstr(irow) & ">"  & chr(13)& chr(10)
          for i=0 to adoRS.Fields.Count-1
            rtnstr=rtnstr & "    <" & adoRS.Fields(i).name & ">" & chr(13)& chr(10)
            rtnstr=rtnstr & "<![CDATA[ " & adoRS.Fields(i) & " ]]>" & chr(13)& chr(10)
            rtnstr=rtnstr & "    </" & adoRS.Fields(i).name & ">" & chr(13)& chr(10)
          next
          rtnstr=rtnstr & "  </r" & cstr(irow) & ">"  & chr(13)& chr(10)
        end if
        if irow>iEndPos then exit do
        irow=irow+1
        adoRS.movenext
      loop
      rtnstr=rtnstr & "</rs>"
      '
      adoRS.Close
      adoConn.Close
      set adoRS=nothing
      set adoConn=nothing
      qrybypage_xml=rtnstr
    end function
    function qrybypage_array(byval sqlquery,byval ipage,byval ipagesize) 
      dim adoConn,adoRS,iCounts,iPagecounts,iStartPos,iEndPos
      set adoConn=server.createobject("ADODB.connection")
      adoConn.open "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath(".")  & "/sys.mdb"   
      set adoRS=server.createobject("ADODB.RecordSet")
      adoRS.open sqlquery,adoConn,1,3   'support movelast   (adOpenKeySet,adLockOptimistic)
      'check cur page
      if ipage<=0 then ipage=1
      adoRS.movelast
      iCounts=adoRS.RecordCount
      iPagecounts = (iCounts - 1) \ ipagesize + 1   'page counts, good job!  vb int div=\ not /
      if ipage>iPagecounts then ipage=iPagecounts
      'get start pos,end pos
      iStartPos = (ipage - 1) * ipagesize
      iEndPos = iStartPos + ipagesize-1
      if (iEndPos > iCounts-1) then iEndPos = iCounts-1    'last page no full page
      '
      dim rtnstr
      rtnstr="@data@" & cstr(iCounts) & "," & cstr(iPagecounts) & "," & cstr(ipage) & "," & cstr(ipagesize) 
      rtnstr=rtnstr & chr(13) & chr(13)  
      
      for i=0 to adoRS.Fields.Count-1
        if i=adoRS.Fields.Count-1 then
          rtnstr=rtnstr & adoRS.Fields(i).name
        else
          rtnstr=rtnstr & adoRS.Fields(i).name & ","
        end if
      next
      '
      irow=0
      adoRS.movefirst
      dim tmpstr
      do while not adoRS.Eof
        if irow>=iStartPos and irow<=iEndPos then
          tmpstr=""
          for i=0 to adoRS.Fields.Count-1
            if i=adoRS.Fields.Count-1 then
              tmpstr=tmpstr & adoRS.Fields(i)
            else
              tmpstr=tmpstr & adoRS.Fields(i) & chr(10) & chr(10)
            end if
          next
          rtnstr=rtnstr & chr(13) & chr(13) & tmpstr
        end if
        if irow>iEndPos then exit do
        irow=irow+1
        adoRS.movenext
      loop
      '
      adoRS.Close
      adoConn.Close
      set adoRS=nothing
      set adoConn=nothing
      qrybypage_array=rtnstr
    end function
  function cmd(byval sqlcmd)  
      dim adoConn
      set adoConn=server.createobject("ADODB.connection")
      adoConn.open "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath(".")  & "/sys.mdb"     
      adoConn.execute(sqlcmd)
      adoConn.Close
      set adoConn=nothing
    end function 
  end class
  function getxmldata(byval xmlstr,byval row,byval key)
    Set xml=Server.CreateObject("Microsoft.XMLDOM")
    xml.Async=False
    xml.ValidateOnParse=False
    xml.LoadXML(xmlstr)   'Load()
    sRtn=""
    If xml.ReadyState>2 Then
      Set StartNode=xml.getElementsByTagName(key)
      if row<=(StartNode.Length-1) then
        sRtn=StartNode.Item(row).Text
      else
        sRtn=""           '"no data:" & cstr(StartNode.Length) & xmlstr
      end if
      'For i=0 To (StartNode.Length-1)
        'sRtn=StartNode.Item(i).getElementsByTagName(key)
      'Next
    Else
      sRtn=""             '"no ready" & xmlstr
    End If
    Set xml=Nothing
    getxmldata=sRtn
  end function
%>

二、调用示例

index.asp

<!-- #include file="conn.asp" -->
<%
   dim db
   set db=new TDB
   'xmlstr=db.qry("select * from xms_hotph")
   'response.write("xml in source code")
   'response.write(xmlstr)
   'response.write("*******************")
   
   dim ipage,ipagesize
   ipage=cint(request.queryString("page"))
   ipagesize=cint(request.queryString("pagesize"))
   'xmlstr=db.qrybypage_xml("select * from xms_hotph",ipage,ipagesize)
   'response.write(xmlstr)
   xmlstr=db.qrybypage_array("select * from xms_hotph",ipage,ipagesize)
   response.write(xmlstr)
   'response.write(getxmldata(xmlstr,0,"phnumber"))
   'db.cmd("insert into xms_hotph (type,phnumber) values (99,'aaa')")
%>

0
投稿

猜你喜欢

  • 一直以来都有这样一个困惑,那就是打开页面间的链接时是在原窗口转换还在新窗口打开呢?如果是在原窗口里转换页面的话,那我还想使用原页面的信息呢?
  • 在工作实践和学习中,如何开启 MySQL 数据库的远程登陆帐号算是一个难点的问题,以下内容便是在工作和实践中总结出来的两大步骤,能帮助DBA
  • 一段重用很高的ajax代码,可以套用    <!DOCTYPE HTML 
  • 对于windows平台来说安装完MySQL后,系统就已经默认生成了许可表和账户,你不需要像在Unix平台上那样执行 mysql_instal
  • 你喜欢在博客文章中使用图片吗?是的,如果不是很麻烦的话,相信大家都不会介意放上几张漂亮的图片来点缀一下内容的,不过你的图片可能会导致下面的两
  • 我在网站上设置了邮件列表功能,实现用户自动订阅和发送,但很多用户输入和提交的邮件地址格式都是无效的,无法处理。请问如何解决这一问题?&nbs
  • 在oracle中有很多关于日期的函数,如:1、add_months()用于从一个日期值增加或减少一些月份date_value:=add_mo
  • 在asp代码中分页是有点麻烦的事情,个人在在代码编写过程中把分页代码写成了两个函数,虽然在功能上不是很完善,但对于一般的应用应该是满足的了。
  • 修改my.ini或my.conf,将sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_US
  • 目前定时的操作有:一、Html页面的定时刷新(Refresh--刷新 ) 1,Refresh (刷新) 代码使用说明 说明:让网页多长时间(
  • 在制作网页的过程中,自适应问题是经常遇到,而又最让人头疼的,看了好多种解决的方法,但是都不是万能的。今天遇到这个问题,实在让我挠头,借鉴了
  • 图片的间隙 (1)问:我有一张大图片,把它切割后在Dreamweaver中进行拼接,可是总是有间隙,不知为什么? 答:不知你是否把表格的边距
  • Opera所属:挪威Opera Software ASA公司渲染引擎:自家的PrestoOpera起初是一款挪威Oper
  • 有些朋友看到这个标题可能会有疑问,难道在视图中使用*符号还有何要注意的地方吗?对于这个问题,我们先不必回答,先看一下例子吧。 我这里,使用的
  • 系列一:图片格式介绍Gif格式特点透明性Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha 透明)
  • div+css实现圆角边框,在网络上查看了一下,很多都是实现圆角的矩形的方法,我在这里介绍的是实现圆角矩形边框的方法。用代码说明问题:<
  • by yemoo有时在编写网页代码时发现,img底部莫名奇妙多出大约3px的空白,无论怎么调节css都不可以,今天再次遇到此问题,网上看了一
  • 众所周知,FileSystemObject(fso)组件的强大功能及破坏性是它屡屡被免费主页提供商(那些支持ASP)的禁用的原因,我整理了一
  • 1:构图图形的层次感图形和元素之间的层次感,可以在干扰视觉的同时,突出自身所想体现的主题,这种表现方式往往是比较直接而且有效的方式。我们所说
  • 请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库.一般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据
手机版 网络编程 asp之家 www.aspxhome.com