经典ASP和SQL Server Express 2005
下面是我用来将一些数据插入到SQL Server数据库的简单asp代码。它给出了下面的错误。有人可以看一下,让我知道这个代码的错误? •网站正在维护经典ASP和SQL Server Express 2005
:
<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
最可能的原因。
•网站有编程错误。
关于关闭友好的HTTP错误,删除错误恢复和照顾SQL注入的观点都是正确的,你应该在我们去之前做到这一点远远地猜测什么是错误的,但有一件事在你的VB脚本代码中很突出(这是在<% %>
中ASP嵌入的语言)。
这就是您使用Response.Write()。
这样做是否允许代码将输出返回到浏览器。当你有该行时:
Response.Write(cmd)
您正在将cmd对象的字符串表示形式发送回浏览器。这很容易破坏页面的服务器端创建。建议
两个一般性件让你更好的工作:
为所有,但最琐碎的网页通常最好从ASP页面删除代码,并把它变成一个独立的libary,然后ASP页面调用。这对于数据访问代码来说当然是明智的。
测试时,您的VB脚本代码不需要用完ASP页面,您可以将脚本复制到文本文件中。重命名该文件.vbs,你应该能够通过双击运行VB脚本。我总是发现通过一个错误工作更方便。
我想要的是,你需要一个命令对象,但你可以直接使用连接对象。他没有明确地定义选项,所以cmd是一个简单的字符串。 – NickD 2011-04-24 09:33:28
哎呀,对了,我会把那部分拿出来。 – 2011-04-24 09:35:30
@Snoopy此外,做response.write不应该导致问题。我想我们拭目以待真正的错误是:) – 2011-04-24 09:39:12
这是现在的错误,我得到的。 Microsoft OLE DB Provider for SQL Server错误 '80004005'无法打开登录请求的数据库 “AddressDB”。 登录失败。 /AddressBook/Insert.asp,9号线 -
可尝试使用SQL身份验证,请参见连接字符串是在这里:www.connectionstrings。COM/ 或更改安全设置:
你确定你的连接字符串是正确的吗?服务器名称看起来不像SQL Server Express实例名称。 – Oded 2011-04-24 09:08:09
我建议在错误恢复下移除 这可能有助于更快找到问题。 – NickD 2011-04-24 09:19:43
无论如何,为什么不使用SQL Server Express 2008 R2? 2005已过时 – abatishchev 2011-04-25 07:07:17