经典的ASP和SQL Server Express 2005

本文关键字:Server Express 2005 SQL ASP 经典 | 更新日期: 2023-09-27 17:52:54

下面是我简单的asp代码,我用它来插入一些数据到SQL Server数据库。它给出了以下错误。有人可以看一下,让我知道这个代码的错误吗?

<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

最可能的原因:

•网站正在维护中。

•网站有一个编程错误。

经典的ASP和SQL Server Express 2005

打开浏览器,我假设它是Internet explorer并禁用"显示友好HTTP错误"。这可以帮助您看到真正的错误消息。

顺便说一句。您的代码允许SQL注入。使用SQL参数或替换一些字符,如单引号等

关于关闭友好的HTTP错误,删除错误简历和照顾SQL注入的观点都是正确的,你应该在我们猜测什么是错的之前做它们,但有一件事确实在你的VB脚本代码中脱颖而出(这是在<% %>中嵌入ASP类的语言)。

这是你对Response.Write()的使用。

允许代码将输出返回给浏览器。当你有这样一行:

Response.Write(cmd)

您正在将cmd对象的字符串表示形式发送回浏览器。这很容易破坏服务器端页面的创建。


让你更好地工作的两条一般性建议:

  • 对于除了最琐碎的页面之外的所有页面,通常最好将代码从ASP页面中删除,并将其放入ASP页面随后调用的独立库中。

  • 在测试时,您的VB脚本代码不需要运行出ASP页面,您可以将脚本复制到文本文件中。将该文件重命名为.vbs,您应该可以通过双击它来运行VB脚本。

这是我得到的错误。微软SQL Server错误的OLE DB提供程序'80004005'无法打开数据库登录请求的"AddressDB"。登录失败。/AddressBook/Insert.asp,第9行-

尝试使用sql身份验证,查看连接字符串在这里:www.connectionstrings.com/或者更改您的安全设置:

http://msdn.microsoft.com/en-us/library/2xzyzb0f.aspx