怎么判断一条查询语句无记录时的状态

xwy1982 2005-04-18 12:42:16
Set rs= cn.Execute ("select psword,zuantai from apply where applynum='"&applynum&"'")

if rs.EOF or rs.BOF then
response.write"无此注册号!"

当表中没有输入的那条记录是就会出错,
错误类型:
(0x80020009)
发生意外。
/caxun.asp, 第 20 行


谁知道这是怎么回事?
怎么去判断这种没记录的返回结果是什么?
...全文
106 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CoolSoso 2005-04-18
  • 打赏
  • 举报
回复
倒!那是rs.open函数的参数,只不过不写也可以,取的是默认值1,1。
具体如下:
rs.open sql,conn,N1,N2
对于参数N1:
adopenforwardonly=0:只读,且当前数据记录只能向下移动
adopenstatic=3:只读,当前数据记录可自由移动
adopenkeyset=1:可读写,当前数据记录可自由移动
adopendynamic=2:可读写,当前数据记录可自由移动,可看到新增记录
对于参数N2:
adlockreadonly=1:默认值,用来打开只读记录
adlockpessimistic=2:悲观锁定
adlockoptimistic=3:乐观锁定
adlockbatchoptimistic=4:批次乐观锁定
可以随便找本ASP书参考,一般都有
  • 打赏
  • 举报
回复
applynum=request("applynum")-----》这个你为空就有错误了
xwy1982 2005-04-18
  • 打赏
  • 举报
回复
哈哈,我知道哪里错了
pas=Replace(rs(0)," ","")
就是这个
因为我原来表中存密码的后面后自动加空格,我用这个把空格删了
如果表中没记录就没有rs(0),所以就出错了
终于找到了,花了我好多时间


兔子兄弟,我想问一下
rs.open "select psword,zuantai from [apply] where applynum='"&applynum&"'",cn,1,3
这里的1,3什么意思
我只知道adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
adOpenKeyset 1 启动一个Keyset类型的游标。
adOpenDynamic 2 启动一个Dynamic类型的游标。
adOpenStatic 3 启动一个Static类型的游标。


你后面怎么跟了两个,又1又3啊
xwy1982 2005-04-18
  • 打赏
  • 举报
回复
那是哪里错了,我全部贴出来
<body>
<%
applynum=request("applynum")
password=request("password")
dim cn
set cn =server.createobject("adodb.connection")
cn.connectionstring="driver={sql server};server=127.0.0.1;database=db;uid=sa;pwd=123"
cn.open
Set rs= cn.Execute ("select psword,zuantai from apply where applynum='"&applynum&"'")
pas=Replace(rs(0)," ","")

%>
<%
if rs.EOF or rs.BOF then
response.write"无此注册号!"
elseif not(rs.Eof) and not(rs.bof) then
if pas<>password then
response.write"密码错误!"
elseif pas=password and isnull(rs(1)) then
response.write"还未审核,请等待!"
elseif pas=password and not(isnull(rs(1))) then
response.write rs(1)
else response.write "未知错误!"
end if
end if
%>


<%
cn.close
set cn=nothing
%>

</body>
CoolSoso 2005-04-18
  • 打赏
  • 举报
回复
试试这个:
Set rs= cn.Execute ("select count(*) from apply where applynum='"&applynum&"'")
if rs(0) = 0 then
……
也就是说,先根据条件取数据,看是否取到的数据条数为“0”
出错的可能原因在于,rs为空时,本身调用rs就出错,也就是说,rs.eof这时调用rs出错
试试看吧!
我的是oracle 别的数据库是不是用count(*)也不是非常清楚。
kingcrab 2005-04-18
  • 打赏
  • 举报
回复
我也相知到
zy51 2005-04-18
  • 打赏
  • 举报
回复
光看这一部分是没有错误的.就是使用rs.eof和rs.bof判断的.
  • 打赏
  • 举报
回复
set rs=server.createobject("adodb.recordset")
rs.open "select psword,zuantai from [apply] where applynum='"&applynum&"'",cn,1,3

你先这么改一下试试
xwy1982 2005-04-18
  • 打赏
  • 举报
回复
可是applynum不为空的时候也会有错
就是表中没有这条记录的时候就会出错
错误类型:
(0x80020009)
发生意外。

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧