在ASP应用程序里,一旦你执行了一个数据库查询,接下来常需要判断查询结果的记录集是否为空集. 如果recordset是空的,你会显示一条消息通知用户,查询没有结果,如果recordset不为空,你会将查询的结果显示给用户. 有许多种办法能判断一个
recordset是否为空. 让我们看看ASP邮件列表里的一篇贴子.

当查询没有得到符合查询条件的结果时,我想显示一条消息通知用户,用什么甚麽代码可以得知recordset为空呢? 比方一个用户提交了查询的条件,数据库中没有符合条件的记录,现在我的代码只能显示一行空行,我该如何得知recordset为空,然后显示"没有符合条件的查询结果."呢?

有人给出了这个问题的答案,答案是正确的,但没有说得很明白:

与游标类型(Cursor type)有关的做法,你可以这么办:

If rst.RecordCount = 0 Then

'no records found
...do something...

End If

或者用与游标类型无关的代码:

If rst.BOF _ And rst.EOF Then

'BOF & EOF indicates an empty recordset
...do something...

End If

没有经验的ADO/ASP程序员可能无法正确理解上面涉及的概念,大部分的ASP/ADO编程新手用如下的代码来打开一个recordset:

Dim rs, conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open ... Connection String ...

Set rs = conn.Execute("SELECT * FROM authors")

这些代码完全符合语法规范,代码中隐式地创建了recordset对象的一个实例,并将其赋于对象变量rs. 但新手往往没有意识到,如果是隐式地创建了recordset对象,那么缺省的游标类型是forward-only. 绝大部分时候这种游标类型是正确的. 然而,如果你想使用RecordCount属性,你的recordset应该允许反向地读取行(backwards row fetching).

为了解释明白我刚才所堆砌的一大堆术语,让我们来看一个简单的例子. 假设一个程序员用上述的代码来创建recordset,然后企图用下面的代码来显示记录的条数:

Response.Write rs.RecordCount

你将得到-1的结果. 你可能会想,recordset里的记录条数是0,可在这种情况下为甚麽会返回-1的结果呢? -1表示ADO无法决定你的recordset里的实际记录条数. 因为
RecordCount属性统计某个recordset中的记录条数的办法是逐条遍历整个
recordset,然后将游标至回当前值. 所以如果你的游标类型没有显式地声明为静态或是动态的话,这个属性无法将游标至回当前值,也就无法返回正确的统计数字.

大部分你可能利用.EOF属性来得知记录集是否为空,就是上面提到的与游标类型无关的解决办法. 你得记住, 如果想得到你的recordset中的记录条数的正确值,你得用允许反向地读取行的游标,或者耍点儿小聪明,就象下面这些代码那样:

Dim rsCount
Set rsCount = conn.Execute("SELECT Count(*) FROM pubs")
Response.Write rsCount(0)

Recordset里的记录数相关推荐

  1. java recordset 记录数_【求助】asp中怎样获得一个记录集(Recordset)的所有行数?

    你的位置: 问答吧 -> 网络编程 -> 问题详情 [求助]asp中怎样获得一个记录集(Recordset)的所有行数? 如标题所示 [ 本帖由 smilekiki 最后编辑于 2006- ...

  2. mongodb查询数据库表里总记录数count_documents()和获取记录里面的name字段的值docView[“name“].get_utf8().value.to_string()

    1.先开始写点起因,就是最近开始搞mongodb的c++开发,结果呢,光是装各种驱动就花了两天.再加上视频教程里的testmongo.cpp的代码,在新版本驱动下根本就不能运行,我就想着重写一下,功能 ...

  3. java recordset 记录数_ADO Recordset 对象

    ADO Recordset 对象 实例 GetRows 本例演示如何使用 GetRows 方法. Recordset 对象 ADO Recordset 对象用于容纳一个来自数据库表的记录集.一个 Re ...

  4. webform计算某几列结果_利用DataTable.Compute等方法和属性做各种统计(某一列的总和sum、不重复的某列记录数distinct)...

    对应sql语句 select UserID, UserName, UserMoney from Users 从数据库里利用SqlDataAdapter读取出DataSet的方法不写了,这个好简单,写统 ...

  5. sql plus 表的总记录数是多少_直播回顾 | 亿级并发丝毫不虚,TDSQL-SQL引擎是如何炼成的...

    腾讯云数据库国产数据库专题线上技术沙龙正在火热进行中,3月19日唐颢的分享已经结束,没来得及参与的小伙伴不用担心,以下就是直播的视频和文字回顾. 关注"腾讯云数据库"公众号,回复& ...

  6. 统计sql server数据库中所有表的记录数

    因工作需要查看库里每个表中的记录数,逐表查询太辛苦,故写一过程处理如下: --基本思路为:到系统表查出表名:然后逐表构造sql语句,查询记录数并插入临时表 --创建临时表,保存数据    create ...

  7. Linux修改history存储的最大记录数

    在linux系统下.history命令会保存多少条命令呢?曾在一本书上说,如果注销系统,那么会将所有的历史命令都定入到~/.bash_history, 但只保留1000条命令(这个是由默认的shell ...

  8. MySQL查询数据库表记录数

    mysql统计一个数据库里所有表的数据量,最近在做统计想查找一个数据库里基本所有的表数据量,数据量少的通过select count再加起来也是可以的,不过表的数据有点多,不可能一个一个地查.记得在Na ...

  9. shell获取hive查询数据结果_在shell中判断hive查询记录数大小

    用途: 根据查询到结果数量来判断,是否需要再执行下个脚本. 1. 查询语句script.q脚本如下: select count(1) as count from test; 2. shell脚本如下: ...

最新文章

  1. 量子力学考研等待计算机吗,考研《量子力学》专业课满分经验谈
  2. python全局变量在程序执行的全过程有效_PYTHON使每个过程都可以访问全局变量
  3. [设计模式]适配器模式
  4. html img src
  5. Oracle分页的SQL语句
  6. android 拨打电话 发送短信 权限,Android开发实现拨打电话与发送信息的方法分析...
  7. kudu建表:Not enough live tablet servers to create a table with the requested replication factor 3. 2
  8. java datasource mysql_java – 添加新的Datasource(mysql)wildfly
  9. C++ 内存的分配方式
  10. linux内核软中断引起大量丢包
  11. php foreach 单箭头,PHP Foreach循环具有单个元素
  12. Hadoop环境共享
  13. Jquery实现图片的预加载与延时加载
  14. Linux上安装GCC编译器过程实录
  15. 数据结构之树(3)——二叉平衡树(AVL)
  16. 统计相关系数(1)——Pearson(皮尔逊)相关系数及MATLAB实现
  17. 在excel里插入图表_如何在Excel中锁定图表的位置
  18. js处理ISO8601时间
  19. 找到堡垒后的目标--逆向CDN的各种方式总结(干货,附解决方案
  20. 印象笔记mac版 同步问题_Typora和印象笔记的完美同步及备份

热门文章

  1. ST-P3:首篇基于环视相机的端到端自动驾驶框架!(ECCV2022)
  2. S2B2C商城系统(分销商城)哪家好?S2B2B商城系统好在哪?
  3. 【优化选址】基于遗传算法求解物流配送中心选址附Matlab代码
  4. Windows Linux 实用技巧
  5. 一个简单的分频器结果时钟信号总是呈现高阻态。
  6. springboot 整合 mongodb 增删改查 第二篇
  7. freeswitch常用命令
  8. 计算机专业辽宁高考各大学分数线,2019中国各大学录取分数线表
  9. ML 的高效学习之旅,你并不孤单
  10. CityEngine使用GIS模板创造三维数字城市(一)