两个简单的问题,我是初学。

tinyvane 2003-09-29 08:45:54
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'

[Microsoft][ODBC Microsoft Access Driver] UPDATE 语句的语法错误。

/test/mod-3.asp,行 23
源代码如下:(这个是MOD-3.ASP,另外有个MOD-2.asp也有问题,在后面,谢谢)


<%@LANGUAGE="VBSCRIPT"%>
<html>
<head>
<title>修改数据库记录</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#ffffff">
<center>
<%
name=request.form("name")
Classname=request.Form("class")
sex=request.form("sex")
score=request.form("score")
set Conn=Server.CreateObject("ADODB.Connection")
conn.open "test"
sqlstmt="update student"
sqlstmt=sqlstmt & "set name='" & name & "',"
sqlstmt=sqlstmt & "sex='" &sex& "',"
sqlstmt=sqlstmt & "class='" & classname & "',"
sqlstmt=sqlstmt & "score='" & score & "'"
sqlstmt=sqlstmt & "where name=' " &name& " ' "
set rs=conn.execute(sqlstmt)

if err.number>0 then
response.write "VBScript errors occured:" & "<p>"
response.write "Error Number=" & err.number & "<p>"
response.write "Error Descr.=" & err.description & "<p>"
response.write "Help Context=" & err.helpcontext & "<p>"
response.write "Help Path=" & err.helppath & "<p>"
response.write "Native Error=" & err.nativeerror & "<p>"
response.write "Source=" & err.source & "<p>"
response.write "SQLState=" & err.sqlstate & "<p>"
end if
IF conn.errors.count>0 then
response.write "Database Errors Occured" & "<p>"
response.write SQLstmt & "<P>"
for counter=0 to conn.errors.count
response.write "Error #" & conn.errors(counter).number & "<P>"
response.write "Error desc. ->" & conn.errors(counter).description & "<P>"
next
else

response.write "<font face='arial' size=4>"
response.write "<br><br>记录已经被成功修改."
response.write "<br></font>"
end if
conn.close
set conn=nothing
%>
</center>
</body>
</html>
第二个问题:

ADODB.Recordset 错误 '800a0e78'

对象关闭时,不允许操作。

/test/mod-2.asp,行 16

源代码如下:
<%@LANGUAGE="VBSCRIPT"%>
<html>
<head>
<title>修改数据库记录</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#0000ff">
<center>
<%
name=request.querystring("name")
set Conn=Server.CreateObject("ADODB.Connection")
conn.open "test"
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from student where name=' " & name &" ' "
if not(rs.eof and rs.bof) then
rs.open sql,conn
Name=rs("Name")
Classname=rs("Class")
sex=rs("sex")
score=rs("score")
end if
%>
<table width=300 border=1 cellpadding=10>
<caption><B><i><font color="#FFFFFF" size="4">修改数据库记录的例子</font></i></B>
</caption>

<tr>
<td bgcolor="#000080"><form action="mod-3.asp" method="post"><font color="#ffff00"><font size=2>姓名<font face="atial" size="2">:</font></font></td>
<td><input type="text" name="name" value="<%=name%>"></td>
</tr>

<tr>
<td bgcolor="#000080"><font size=2><font color="#FFFF00">性别</font></font><font face="atial" size="2" color="#ffff00">:</font></td>
<td><input type="text" name="sex" value="<%=sex%>"></td>
</tr>

<tr>
<td bgcolor="#000080"><font size=2><font color="#FFFF00">班级</font></font><font face="atial" size="2" color="#ffff00">:</font></td>
<td><input type="text" name="class" value="<%=classname%>"></td>
</tr>

<tr>
<td bgcolor="#000080"><font size=2><font color="#FFFF00">成绩</font></font><font face="atial" size="2" color="#ffff00">:</font></td>
<td><input type="text name="score" value="<%=score%>"><input type="hidden" name="ID" value="<%=ID%>"></td>
</tr>

<tr>
<td colspan=2 align="center"><font face="atial">
<input type="submit" value="修改记录">
</form>
</td>
</tr>

</table>
</center>
</body>
</html>

如果大家想看MOD-1.asp,附后
<%@LANGUAGE="VBSCRIPT"%>
<html>
<head>
<title>修改数据库记录的例子</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<center>
<%
set Conn=Server.CreateObject("ADODB.Connection")
conn.open "test"
set rs=Server.CreateObject("ADODB.RecordSet")
sqlstmt="SELECT * from student"
rs.open sqlstmt,conn
if rs.eof then
response.write "<center>数据库中没有记录,"
response.Write "<br>请检查数据库!</center>"
else
%>
<h1><b><i>修改数据库的例子</i></b></h1>
<hr>
<table width=600 border=1 cellpadding=10 height="10">
<%
Do While not rs.eof
Name=rs("Name")
Classname=rs("Class")
sex=rs("sex")
score=rs("score")
%>
<tr>
<td height="1"><a href="mod-2.asp?name=<%=name%>"><font size="3"><%=name%></font></b></td>
<td height="1"><font size="3"><%=sex%></font></td>
<td height="1"><font size="3"><%=classname%></font></td>
<td height="1"><font size="3"><%=score%></font></td>
</tr>
<%
rs.movenext
loop
rs.close
set rs=nothing
conn.close
set conn=nothing
end if
%>
</table>
</body>
</html>
...全文
23 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
troopers 2003-09-29
  • 打赏
  • 举报
回复
搞asp.有时候一些细节问题.很让人麻烦.不过.遇到过了.下次就知道是什么原因了:)
TonyAmanda 2003-09-29
  • 打赏
  • 举报
回复
看到了,原来是空格没加,杀鸡用牛刀了。
不过我这个调试方法还是管用的,推荐使用。
以后碰到类似的问题就不用求别人了。
TonyAmanda 2003-09-29
  • 打赏
  • 举报
回复
第一个问题:估计是你的sqlstmt有问题,比如sqlstmt=sqlstmt & "score='" & score & "'"这句话,如果这个时候score的值是null的话(没有值),那自然这个SQL语句就错了。
你可以在执行sqlstmt前加入这两个语句:
Response.Write sqlstmt
Response.End
然后执行这个页面,它会显示sqlstmt,看看是不是这个问题。
如果是,那就检查一下那个提交表单的页面出了什么问题。
sinusoid 2003-09-29
  • 打赏
  • 举报
回复
第一题:
改: sqlstmt="update student"

为: sqlstmt="update student "
后加空格
TonyAmanda 2003-09-29
  • 打赏
  • 举报
回复
先答第二个问题:if not(rs.eof and rs.bof) then rs.open sql,conn
解释器会先解释判断语句Not(rs.eof and rs.bof),而这个时候你的rs.open还没有被执行,
也就是说rs并没有被打开,所以会出现“对象关闭时,不允许操作”的错误。
只要先打开rs,再判断就行了。
sinusoid 2003-09-29
  • 打赏
  • 举报
回复
第二题:
if not(rs.eof and rs.bof) then
rs.open sql,conn

改为:

rs.open sql,conn,1,3
if not(rs.eof and rs.bof) then

28,390

社区成员

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

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