Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 经典ASP和SQLServerExpress 2005_C#_Sql Server_Asp Classic_Sql Server 2005 Express - Fatal编程技术网

C# 经典ASP和SQLServerExpress 2005

C# 经典ASP和SQLServerExpress 2005,c#,sql-server,asp-classic,sql-server-2005-express,C#,Sql Server,Asp Classic,Sql Server 2005 Express,下面是我的简单asp代码,我正在使用它向SQL Server数据库插入一些数据。它给出了以下错误。有人能看一下并告诉我这个代码的错误吗 <html> <head> <title>Address Book Insertion</title> </head> <body> <% set connection=Server.CreateObject("ADODB.Connec

下面是我的简单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

最可能的原因:

•网站正在维护中

•网站存在编程错误


进入浏览器,我假设它是internet explorer,并禁用“显示友好的http错误”。这有助于您查看真正的错误消息


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

进入浏览器,我假设它是internet explorer,并禁用“显示友好的http错误”。这有助于您查看真正的错误消息


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

关于关闭友好的HTTP错误、删除错误恢复和处理sql注入的要点都是正确的,在我们猜测错误的地方走得太远之前,您应该这样做,但有一点在您的VB脚本代码中非常突出(这是
中ASP分类中嵌入的语言)

这就是Response.Write()的用法

这样做的目的是允许代码将输出返回到浏览器。当您有行时:

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


还有两条让你工作得更好的建议:

  • 对于除最普通的页面外的所有页面,通常最好从ASP页面中删除代码,并将其放入ASP页面随后调用的独立库中。这对于数据访问代码来说无疑是明智的

  • 在测试过程中,您的VB脚本代码不需要从ASP页面中运行,您可以将脚本复制到文本文件中。重命名该文件。vbs,您应该能够通过双击该文件来运行VB脚本。我发现在处理错误时,这一点要方便得多


关于关闭友好HTTP错误、删除错误恢复和处理SQL注入的观点都是正确的,在我们猜测错误之前,您应该这样做,但有一点在您的VB脚本代码中非常突出(即
中嵌入ASP分类的语言)

这就是Response.Write()的用法

这样做的目的是允许代码将输出返回到浏览器。当您有行时:

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


还有两条让你工作得更好的建议:

  • 对于除最普通的页面外的所有页面,通常最好从ASP页面中删除代码,并将其放入ASP页面随后调用的独立库中。这对于数据访问代码来说无疑是明智的

  • 在测试过程中,您的VB脚本代码不需要从ASP页面中运行,您可以将脚本复制到文本文件中。重命名该文件。vbs,您应该能够通过双击该文件来运行VB脚本。我发现在处理错误时,这一点要方便得多


这是我现在得到的错误。Microsoft SQL Server的OLE DB提供程序错误 “80004005”无法打开数据库 登录请求的“AddressDB”。 登录失败。 /地址簿/Insert.asp,第9行-

或者尝试使用sql身份验证,请参见此处的连接字符串:www.connectionstrings.com/ 或更改您的安全设置:


这是我现在得到的错误。Microsoft SQL Server的OLE DB提供程序错误 “80004005”无法打开数据库 登录请求的“AddressDB”。 登录失败。 /地址簿/Insert.asp,第9行-

或者尝试使用sql身份验证,请参见此处的连接字符串:www.connectionstrings.com/ 或更改您的安全设置:



您确定您的连接字符串正确吗?服务器名称看起来不像SQL server Express实例名称。我建议在下一步恢复时删除该名称,这有助于更快地发现问题。无论如何,为什么不使用SQL server Express 2008 R2?2005已过时?您确定您的连接字符串正确吗?服务器名称不正确k类似于SQL Server Express实例名称。我建议在下一步恢复时删除,这有助于更快地发现问题。无论如何,为什么不使用SQL Server Express 2008 R2?2005对于SQL注入来说是过时的+1-将字符串与用户输入关联并将其作为命令执行是非常糟糕的另一点,我假设iis没有对数据库的访问权限。默认的it可能是网络服务。+1对于sql注入-将字符串与用户输入关联并作为命令执行非常糟糕。另一点,我假设iis的应用程序池没有对数据库的访问权限。默认的it可能是网络服务。我认为相同,即您需要一个命令对象,但您可以直接使用连接对象。他没有定义option explicit,因此cmd是一个简单的字符串。@Snoopy,鉴于此,执行response.write应该不会引起问题。我想我们等着看真正的错误是什么:)我非常确定应用程序池用户没有与数据库关联:-)这是我现在得到的错误。SQL Server的Microsoft OLE DB提供程序错误“80004005”无法打开登录请求的数据库“AddressDB”。登录失败/AddressBook/Insert.asp,第9I行同样认为您需要一个命令对象,但您可以直接使用连接对象。他没有定义option explicit,所以cmd是一个简单的字符串。@Snoopy和give