小问题 搞定立马给分!

fatcat_xp 2003-12-23 06:00:33
添加数据到数据库里时发生的错误
系统提示

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。


我使用的 XP+SP1 +IIS 数据库为ACCESS

其中添加数据的 相关语句是
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
DBPath=server.MapPath("/database/forum.mdb")
conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="&DBPath&";"

sql = " insert into guestbook (author,theme,content,input_time,ip_guest) VALUES ('"&author&"','"&theme&"','"&content&"','"¤t&"','"&user_ip&"') "

conn.Execute= sql
conn.close
set conn=nothing

错在哪里?? 难道是 驱动的语句不对??

恳请大虾指教!!!

...全文
92 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
realjoshzuo 2003-12-23
  • 打赏
  • 举报
回复
翻译得比较匆忙,呵呵。
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an
updateable query.
原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为
ADO由于以下的几个原因而不能够写数据库造成的。
1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。
要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
Jet需要在该目录建立一个.ldb文件。
2。第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
SQL = "UPDATE Products Set UnitPrice = 2;"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = 3 '3 = adModeReadWrite
Conn.Open "myDSN"
Conn.Execute(SQL)
Conn.Close
注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
3。还有可能是在ODBC管理器中将该DSN的只读选项选中。
4。你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新
这两个表中各自字段。
5。当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)
中的查询时,在执行这个查询是会出现该错误。
rainhow 2003-12-23
  • 打赏
  • 举报
回复
好像你的数据库的权限不到吧,
我也曾经遇到过这样的情况的,
你把数据库的权限改一下看看了,
huang59 2003-12-23
  • 打赏
  • 举报
回复
你先看看你的ACCESS是不是到期了?
lonelydreamsym 2003-12-23
  • 打赏
  • 举报
回复
server.MapPath("/database/forum.mdb")前面多了个“/”那就表示绝对路径了,去掉"database"前面的“/”看看,其它方面好像没发现什么问题。
fifaqzx 2003-12-23
  • 打赏
  • 举报
回复
怎么改?
tiger1978 2003-12-23
  • 打赏
  • 举报
回复
数据库可能是只读的,改掉应该就可以了
fatcat_xp 2003-12-23
  • 打赏
  • 举报
回复
我把所有的 代码全贴出来 拜托高手指教 ~~~

<%

user_ip=request.ServerVariables("REMOTE_ADDR")
theme=request.form("theme")
content=request.form("textarea")
content=replace(content,vbcrlf,"<br>")
content=replace(content," "," ")


if session("user_name_record")=empty then
session("user_name_record")="anonymous"

else

end if

author=session("user_name_record")
current=now()

if theme="" or content="" then
response.write "<SCRIPT language=JavaScript>alert('标题和留言不可为空');"
response.write "this.location.href='/guestbook/';</SCRIPT>"
else

Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
DBPath=server.MapPath("/database/forum.mdb")
conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="&DBPath&";"

sql = " insert into guestbook (author,theme,content,input_time,ip_guest) VALUES ('"&author&"','"&theme&"','"&content&"','"¤t&"','"&user_ip&"') "

conn.Execute(sql)

conn.close
set conn=nothing


end if

response.write "<SCRIPT language=JavaScript>alert('::: 感谢您的留言,按回车键返回 :::');"
response.write "this.location.href='/guestbook/guestlist.asp';</SCRIPT>"
%>
fatcat_xp 2003-12-23
  • 打赏
  • 举报
回复
这么离奇??以前一直是用 =

而且 改了()以后 没用啊

而且 提示错误 一样的
hnjava 2003-12-23
  • 打赏
  • 举报
回复
conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="&DBPath

conn.Execute(sql)
monkeys 2003-12-23
  • 打赏
  • 举报
回复
conn.Execute= sql


-》conn.Execute(sql)
GageCSDN 2003-12-23
  • 打赏
  • 举报
回复
conn.Execute(sql)

28,406

社区成员

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

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