Классический ASP и SQL Server Express 2005 - PullRequest
1 голос
/ 24 апреля 2011

Ниже приведен мой простой 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

Наиболее вероятные причины:

• Сайт находится на обслуживании.

• На веб-сайте имеется ошибка программирования.

Ответы [ 3 ]

3 голосов
/ 24 апреля 2011

зайдите в ваш браузер, я предполагаю, что это Internet Explorer и отключите "Показывать дружественные ошибки http".это поможет вам увидеть реальное сообщение об ошибке.

Кстати.Ваш код позволяет SQL инъекций.использовать параметры sql или заменить некоторые символы, такие как одинарные кавычки и т. д.

2 голосов
/ 24 апреля 2011

Замечания по отключению дружественных ошибок HTTP, удалению возобновления при ошибке и заботе о внедрении SQL - все правильно, и вы должны сделать это, прежде чем мы зайдем слишком далеко, чтобы угадать, что не так, но одна вещь действительно выделяетсяв вашем коде VB Script (это язык, встроенный в ASP Classing в <% %>).

То, что вы используете Response.Write ().

Это позволяеткод для возврата вывода в браузер.Когда у вас есть строка:

Response.Write(cmd)

Вы отправляете строковое представление вашего объекта cmd обратно в браузер.Это может легко сломать создание страницы на стороне сервера.


Еще два общих совета, которые помогут вам работать лучше:

  • Для всех, кроме большинстваДля обычных страниц обычно лучше удалить код со страницы ASP и поместить его в отдельную библиотеку, которую затем вызывает страница ASP.Это, безусловно, рекомендуется для кода доступа к данным.

  • Во время тестирования код сценария VB не нужно запускать со страницы ASP, его можно скопировать в текстовый файл.,Переименуйте этот файл .vbs, и вы сможете запустить скрипт VB, дважды щелкнув по нему.Мне всегда было намного удобнее работать с ошибкой.

1 голос
/ 25 апреля 2011

Это ошибка, которую я сейчас получаю.Поставщик Microsoft OLE DB для SQL Server ошибка «80004005» Не удается открыть базу данных «AddressDB», запрошенную при входе в систему.Ошибка входа/AddressBook/Insert.asp, строка 9 -

Либо попробуйте использовать проверку подлинности sql, см. Строку подключения здесь: www.connectionstrings.com/, либо измените настройки безопасности:

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

...