asp连接数据库出现错误,请高手指教!在线等。。。

chaoone 2006-04-02 05:41:34
本人初学asp,在 asp与access连接上总是不会弄,望高手指教!我感觉不会是我access数据库建的有问题吧?
下面注册入库时出现的错误提示:ADODB.Connection (0x800A0E78)对象关闭时,不允许操作。/Web/biye/useradd2.asp, 第 62 行

下面是程序:


<!--设置缓冲区-->
<%Response.Buffer=true%>
<body bgcolor="#C4FFEO">
<%
'设置数据库参数
Set Conn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("bbs.mdb")+";DefaultDir=;" _
& "DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25; " _
& "FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512; " _
& "MaxScanRows=8;PageTimeout=5;SafeTransactions=0; " _
& "Threads=3;UserCommitSync=Yes; "
'打开数据库
Conn.Open connstr

'数据库查询语句
sql="SELECT * FROM 用户表 WHERE 用户名=' " & Request("name") & " ' "
'将查询结果放入一个记录集中
Set Rs=conn.Execute(sql)
'输入的合法性检查
If not Rs.Bof OR Rs.Eof Then
Response.Write "你所输入的姓名已经被别人使用,请用别的名称。"
end if
if Rs.Bof OR Rs.Eof Then
Response.clear
rs.close
%>
<body bgcolor="#C4FFEO">
<%
Set Conn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+Server.mappath("bbs.mdb")+";DefaultDir=; " _
& "DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25; " _
& "FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512; " _
& "MaxScanRows=8;PageTimeout=5;SafeTransactions=0; " _
& "Threads=3;UserCommitSync=Yes; "
'将用户提交的内容放到一组变量中
name=Request.Form("name")
pass=Request.Form("name")
mail=Request.Form("mail")
url=Request.form("url")

'合法性检查,生成相应的错误信息
if name=" " then
o="你必须输入名字"
Request.Redirect "useradd1.asp?from_useradd2=" & o & " "
else
if pass=" " then
p="你必须输入至少一位密码"
Request.Redirect "useradd1.asp?from_useradd2=" & p & " "
end if
end if

if mail=" " then
mail=" "
end if
if url=" " then
url=" "
end if

'确认无误后进行入库操作
sz = " ' " & name & " ' , ' " & pass & " ', ' " & mail & " ', ' " & url & " ' "
into_db = "INSERT INTO 用户表(用户名,密码,电子邮件,网址)VALUES(" &SZ & ")"
conn.Execute(into_db) /就是这一行出错了。。。。。。。
%>
<!--最后返回成功的信息-->
注册成功!!!
<!--显示日期时间-->
<%LogTime=Now()
Num1=Cstr(Hour(LogTime)) & Cstr(Minute(LogTime)) & Cstr(Second(LogTime))&Cstr(Int(Rnd*10000))

'更新用户的临时身份
sql="UPDATE 用户表 SET 临时身份=" & Num1 & " WHERE 用户名=' " & name & " ' "
conn.Execute sql
conn.close
%>
'生成进入论坛的链接,传出去的参数是用户的临时身份号
<a href="vew.asp?No=<%=Num1%>">登陆论坛</a>
<%end if%>


我这是照着书打下来的,感觉不会出错吧?那位能帮忙看看,谢谢了。。。
...全文
99 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaoone 2006-04-04
  • 打赏
  • 举报
回复
那位可以帮下在下,谢谢了!
chaoone 2006-04-03
  • 打赏
  • 举报
回复
那位能解决下?
chaoone 2006-04-02
  • 打赏
  • 举报
回复
If not Rs.Bof OR Rs.Eof Then
Response.Write "你所输入的姓名已经被别人使用,请用别的名称。"
'在这里加一句
response.end()
end if

不管怎么样总出现“你所输入的姓名已经被别人使用,请用别的名称”
看来是不对。

sz = " ' " & name & " ' , ' " & pass & " ', ' " & mail & " ', ' " & url & " ' "
into_db = "INSERT INTO 用户表(用户名,密码,电子邮件,网址)VALUES(" &SZ & ")"
response.Write(into_db)'添加上这句看看你的 name,pass,mail,url 的值是不是正确。

毛病依然。。。。

书本上的就是这个写的一个字都没错,怎么就不能运行呢?
hbjmdx008 2006-04-02
  • 打赏
  • 举报
回复
出错是什么原因呢?
我分析有二个原因:
一种是23句
If not Rs.Bof OR Rs.Eof Then
Response.Write "你所输入的姓名已经被别人使用,请用别的名称。"
'在这里加一句
response.end()
end if
另一种是:60句
sz = " ' " & name & " ' , ' " & pass & " ', ' " & mail & " ', ' " & url & " ' "
into_db = "INSERT INTO 用户表(用户名,密码,电子邮件,网址)VALUES(" &SZ & ")"
response.Write(into_db)'添加上这句看看你的 name,pass,mail,url 的值是不是正确。
chaoone 2006-04-02
  • 打赏
  • 举报
回复
很明显,如果你23行
if Rs.Bof OR Rs.Eof Then
Response.clear
rs.close
符合条件执行过,再执行到62行时肯定报错啊


那23行该怎么改呢?删掉还会出现那错误。


在62行前再加上一句
Conn.Open connstr试一下

加了之后出现[Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。
zgbhtqz 2006-04-02
  • 打赏
  • 举报
回复
在62行前再加上一句
Conn.Open connstr试一下
pzpower 2006-04-02
  • 打赏
  • 举报
回复
很明显,如果你23行
if Rs.Bof OR Rs.Eof Then
Response.clear
rs.close
符合条件执行过,再执行到62行时肯定报错啊

28,391

社区成员

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

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