asp mysql rs.recordcount_在ASP中出现RecordCount=-1的解决方法

本文大家一起分享学习的是关于在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方法后才锁定记录。(用于批处理修改)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值