选择显示字体大小

nextrecordset 和 getrows 双簧合奏

     nextrecordset 和 getrows 大家可能用的很少!
  最近使用使用,不错的好东东!
  对提高批量查询,查询纪录集不是巨海量的情况很有效果
  nextrecordset 和 getrows 是recordset的两个属性(属性还是方法我是常混淆是非#$#$,弄不清四下五除一)
  
  getrows ---> 将recordset记录集提取到一个二维数组中,我们对recordset数据的行为就转移到该数组,可以早早的断开纪录集,不用再使用元数据操作,rs.movnext, while not rs.eof等可以省掉
  
  nextrecordset ----> 就是在一次提交多个查询,形成多个reordset结果集的情况下,提供一个离开当前工作的recordset,转移到第二个recordset的方法!
  主要是用在多个select形成的结果集的情况
  
  示例如下:
  
  dim sql,rs,arra,arrb,rowsa,rowsb
  
  '======提取数据库库记录====
  
  (adodb.connection 的连接部分省略,假定conn.open connstr)
  sql=" select ca1,ca2,ca3,ca4 from tablea " '---------------selecta
  sql=sql&" select cb1,cb2,cb3,cb4,cb5 from tableb " '-------------selectb
  
  set rs=conn.execute(sql)
  '执行结果将有两个select 的结果集,当前第一个select的recordset处于激活状态
  
  arra=rs.getrows '----------取得selecta recordset的二维数组
  
  set rs=rs.nextrecordset
  '------------最关键的一步,使用nextrecordset激活下一个recordset
  
  arrb=rs.getrows '----------再次取得第二个selectb recordset的二维数组
  
  rs.close
  set rs=nothing '---------尽早释放数据库对象,关闭记录集
  conn.close
  set conn=nothing
  这样,我们所有关于数据库的数据干干净净的提取完成,用最早的时间释放数据库资源
  '-----------//
  
  '========用取得的arra arrb进行页面处理,显示数据结果======
  '注意,arra=getrows 后得到的数组,第一维是代表列,第二维代表行
  
  rowsa=ubound(arra,2) '----提取arra的第二维下标,相当于取得recordset 的记录行数
  rowsb=ubound(arrb,2) '-----同上,提取arrb的第二维下标
  
  '做数据循环:
  
  '第一个select表的循环
  response.write "<table>"
  for i=0 to rowsa
  response.write "<tr>
  response.write "<td>"&arra(i,0)&"</td>" 'tablea.ca1
  response.write "<td>"&arra(i,1)&"</td>" 'tablea.ca2
  response.write "<td>"&arra(i,2)&"</td>" 'tablea.ca3
  response.write "<td>"&arra(i,3)&"</td>" 'tablea.ca4
  response.write "</tr>"
  next
  response.write "</table>
  
  '第二个select表循环
  response.write "<table>"
  for i=0 to rowsb
  response.write "<tr>
  response.write "<td>"&arrb(i,0)&"</td>" 'tableb.cb1
  response.write "<td>"&arrb(i,1)&"</td>" 'tableb.cb2
  response.write "<td>"&arrb(i,2)&"</td>" 'tableb.cb3
  response.write "<td>"&arrb(i,3)&"</td>" 'tableb.cb4
  response.write "<td>"&arrb(i,4)&"</td>" 'tableb.cb5
  response.write "</tr>"
  next
  response.write "</table>
  
  '--------over
  
  rem '============小结========
  
  这样的结果,再清楚不过!
  (1)使用nextrecordset,可以处理多个select语句一次发送形成的结果集,减少网络流量,必定加快速度!
  不使用nextrecordset 则会这样操作:
  sql="select ca1,ca2,ca3, ca4 from tablea "
  set rs=conn.execute (sql)
  sql=" select cb1,cb2,cb3,cb4,cb5 from tableb "
  set rs=conn.execute (sql)
  (2)使用getrows将记录集提取到数组中(放到内存,所以要求记录集不要海大啦)
  用内存的数组工作,而且省掉eof,movenext等的判断,谁更快!自不必说!
  (3)最最主要的,我们利用上二者,一次性将所有的数据提完,快速断开数据库连接和摧毁建立recordset数据库对象,大大减少网络流量!性能自然要提高很多!
  
  '-----------呵呵!及时原创,初浅晦色,见谅见谅~~~~~~~v37
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons