下面是我用来将一些数据插入SQL Server数据库的简单asp代码。它给出了以下错误。有人可以看看,让我知道这段代码的错误吗?
<html>
<head>
<title>Address Book Insertion</title>
</head>
<body>
<%
set connection=Server.CreateObject("ADODB.Connection")
connection.Open "Provider=SQLOLEDB;Server=charithj-pc;Integrated Security=SSPI;Initial Catalog=AddressDB;"
cmd = "INSERT INTO AddressBook (FirstName, Surname, Address) VALUES ('"
cmd = cmd & Request("FirstName") & "','"
cmd = cmd & Request("Surname") & "','"
cmd = cmd & Request("Address") & "')"
Response.Write(cmd)
on error resume next
connection.Execute cmd
if err <> 0 then
Response.Write("Insertion failed")
else
Response.Write("Insertion successful")
end if
connection.close
%>
</body>
</html>
网站无法显示页面
HTTP 500
最有可能的原因是:
•网站正在维护中。
•网站存在编程错误。
答案 0 :(得分:3)
进入您的浏览器,我认为它是Internet Explorer并禁用“显示友好的http错误”。这有助于您查看真实的错误消息。
顺便说一句。你的代码允许sql注入。使用sql参数或替换一些字符,如单引号等。
答案 1 :(得分:2)
关于关闭友好的HTTP错误,删除错误恢复和处理SQL注入的要点都是正确的,你应该在我们走得太远之前猜测出错是什么,但有一点确实突出在您的VB脚本代码中(这是<% %>
中嵌入在ASP Classing中的语言。)
这是你对Response.Write()的使用。
这样做是允许代码将输出返回给浏览器。如果你有这条线:
Response.Write(cmd)
您正在将cmd对象的字符串表示形式发送回浏览器。这很容易破坏服务器端页面的创建。
为了让你更好地工作,还有两条一般建议:
对于除了最简单的页面以外的所有页面,通常最好从ASP页面中删除代码并将其放入ASP页面随后调用的独立库中。这当然建议使用数据访问代码。
在测试时,您的VB脚本代码不需要在ASP页面外运行,您可以将脚本复制到文本文件中。重命名该文件.vbs,您应该能够通过双击它来运行VB脚本。在处理错误时,我总是发现这更方便。
答案 2 :(得分:1)
这是我现在的错误。微软 用于SQL Server的OLE DB提供程序错误 '80004005'无法打开数据库 登录请求“AddressDB”。 登录失败。 /AddressBook/Insert.asp,第9行 -
尝试使用sql身份验证,请参阅连接字符串:www.connectionstrings.com/ 或更改您的安全设置: