ASP技巧:RecordCount=-1解决方案

技巧|解决

    现象

  当在服务器端请求RecordCoun时会返回-1。这是因为ActiveX Data Objects (ADO) 2.0中的CursorType是adOpenForwardonly或者adOpenDynamic。

  如果是ADO 1.5,只发生在cursortype是adOpenForwardonly的时候。如果使用OLEDB provider for JET和SQL Server产生的结果可能不同,这依赖于数据库的提供者。 

  提供者可能不支持某些CursorTypes。当你选择的CursorType不被支持时,提供者将选择最接近于你所请求的CursorType。请参考你的提供者的文档。此外,请注意不是所有的LockType和CursorType的组合都可以同时工作。改变LockType将强制改变CursorType。请确定使用调试来检查CursorType的值。 

  原因 
     
  在动态的游标中纪录号可能改变。Forwardonly的游标无法返回RecordCount。

  解决办法 

  使用adOpenKeyset(=1)或者adOpenStatic(=3)作为服务器端游标或者客户端游标。客户端只使用adOpenStatic作为CursorTypes,而不管你选择什么样的CursorType。 
     
  状态
     
  这个形式是设计决定的。

===============================================================================

  链接文档帮助理解解决

  有关rs.open sql,1,1中“1”和另外一个“1”的解释

  rs.open sql,1,1也可以写成

rs.CursorType  =  1
rs.LockType  =  1
rs.open  sql

  其中CursorType代表从一个表或者一个SQL查询结果返回的记录。

  这个参数有四个值分别是:

  adOpenForwardOnly(=0)

  表示只允许在记录集内的记录间往前移动。这个是缺省值。(只读,且当前数据记录只能向下移动)

  adOpenKeyset(=1)

  反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新记录的动作。(只读,当前数据记录可自由移动)

  adOpenDynamic(=2) 

  反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录。(可读写,当前数据记录可自由移动)

  adOpenStatic(=3)

  不反映其它用户对记录所做的修改,添加,删除动作。(可读写,当前数据记录可自由移动,可看到新增记录)

  lockType 表示当打开记录集时,数据提供者用于锁定数据库的类型:

  adLockReadOnly(=1)

  数据不能改变,缺省锁定类型,记录集是只读的,不能修改记录

  adLockPessimistic(=2)

  悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。(数据提供者在开始编辑数据的时候锁定记录)

  adLockOptimistic(=3)

  乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。(仅当调用update方法时,数据提供者锁定记录)

  adLockBatchOptimistic(=4)

  批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。(用于批处理修改)

时间: 2024-10-03 19:29:41

ASP技巧:RecordCount=-1解决方案的相关文章

改进性能和样式的24个ASP 技巧

技巧|性能 1.ASP技巧集锦(官方权威版)-7 [2005-02-23]     2.ASP技巧集锦(官方权威版)-6 [2005-02-23]     3.ASP技巧集锦(官方权威版)-5 [2005-02-23]     4.ASP技巧集锦(官方权威版)-4 [2005-02-23]     5.ASP技巧集锦(官方权威版)-3 [2005-02-23]     6.ASP技巧集锦(官方权威版)-2 [2005-02-23]     7.ASP技巧集锦(官方权威版)-1 [2005-02-

改进性能和样式的 25+ ASP 技巧

技巧|性能 改进性能和样式的 25+ ASP 技巧 --------------------------------------------------------------------------------Len Cardinal - Microsoft Consulting Services 高级顾问George V. Reilly - Microsoft IIS Performance 主管 更新时间:2000年4月 根据 Nancy Cluts 的文章(英文)改写Nancy Clut

ASP防注入之解决方案--加强版

防注入|解决 <% 'ASP防注入之解决方案'特殊页面处理'因为有些页通过流式传递(比如含有文件上传的表单)'如果单一使用穷举Form对象的操作就会出错'所以要把这些页面过滤出来,同时在页面中使用sql("检测的字串")才行'垃圾猪zero@new57.com'http://blog.csdn.net/cfaq '将本页用include方法放在头部以让所有页都可以调用,比如include在conn.asp里'如果有流式上传的页面请把该页加到表page中,以防form冲突 Dim

一些Asp技巧和实用解决方法_应用技巧

一些Asp技巧和实用解决方法 随机数: <%randomize%> <%=(int(rnd()*n)+1)%> 查询数据时得到的记录关键字用红色显示: <% =replace(RS("字段X"),searchname,"<font color=#FF0000>" & searchname & "</font>") %> 通过asp的手段来检查来访者是否用了代理 <%

ASP技巧实例:ASP实现最简洁的多重查询的解决方案

技巧|解决 [前言] 我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑.特别是客户端部分填入查询条件时,如用普通方法将更是难上加难. 以下巧妙地利用"where 1=1"的恒等式(事实上很多,让它值为TRUE即可)解决此问题. [正文概要] 'subject 信息标题 'company 发布信息的公司名称 'content 发布信息的内容 'address 公司地址 'infomation 公司简介 'note 相关说明 以上值均由FORM提交,然后通过:sub

ASP技巧集锦(官方权威版)-3

技巧 技巧 6:妙用 Session 对象 在肯定了在 Applications 和 Sessions 中缓存的优点之后,我们建议您避免使用 Session 对象.下面将会谈到,当用于忙碌站点时,Sessions 有几个缺点.所谓忙碌,通常是指站点每秒请求数百页或同时有数千个用户.该技巧对于必须进行水平扩展的站点,即那些利用多个服务器来适应负载或执行容错功能的站点来说,更加重要.对于较小的站点,如 intranet 站点,Sessions 的便利,与开销相比也是值得的. 为了翻新,ASP 自动为

站长建站常用的SQL和ASP技巧集合

sql|集合|技巧|站长 sql常用命令方法!!!(1) 数据记录筛选: sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"  sql="select * from 数据表 where 字段名 like ''%字段值%'' order by 字段名 [desc]"  sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"

ASP技巧TOP 10(转)

技巧 1.避免使用DSN连接数据库1054 是否仍旧在使用ODBC系统或文件DSN连接数据库?请用OLEDB提供者代替它,这是一种速度更快而且不需要使用DSN的数据库连接技术.使用OLEDB提供者,你不必再为了创建系统DSN恳求ISP(或数据库管理员/网站管理员),也不必为了网站文件位置的变化而修改配置. 问: 我看到过大量通过数据资源名字(DSN)连接数据库的例子,不过我现在想不通过DSN连接数据库.在ASP中可以实现这一点吗?能否举几个具体的例子说明?我希望新的连接方法不依赖于系统DSN,但

ASP技巧TOP 10(一)

技巧 1.避免使用DSN连接数据库1054 是否仍旧在使用ODBC系统或文件DSN连接数据库?请用OLEDB提供者代替它,这是一种速度更快而且不需要使用DSN的数据库连接技术.使用OLEDB提供者,你不必再为了创建系统DSN恳求ISP(或数据库管理员/网站管理员),也不必为了网站文件位置的变化而修改配置. 问: 我看到过大量通过数据资源名字(DSN)连接数据库的例子,不过我现在想不通过DSN连接数据库.在ASP中可以实现这一点吗?能否举几个具体的例子说明?我希望新的连接方法不依赖于系统DSN,但