经典ASP和SQL Server Express 2005

时间:2011-04-24 09:06:45

标签: c# sql-server asp-classic sql-server-2005-express

下面是我用来将一些数据插入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

     

最有可能的原因是:

     

•网站正在维护中。

     

•网站存在编程错误。

3 个答案:

答案 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/ 或更改您的安全设置:

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