首页 >> 读书频道 >> 电脑 >> 何得知Recordset里的记录数
 
· 用GetString来提
· 何存取三层式结构的数据库
· 当Recordcount
· 如何实现多记录的分页显示
· 在ASP中用集合成批操作
· RecordSet的Lo
· RecordSet的Cu
· ADO Recordse
· 获得删除纪录的个数
· Recordset Cu
· 数据库设计经验谈
· 利用SQL发E-MAIL
 
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 红楼梦:120回全本[清
· 武林寓言故事
· 2006高考录取规则
· 首批中国世界名牌产品和2
· 济南美食大全
· 管理三十六计
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

何得知Recordset里的记录数


查看有无更新版本

关键字:ASP与数据库 2006-8-28

 

在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 ]
何得知Recordset里的记录数 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑