1

以下は、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>

Web サイトでページを表示できません

HTTP 500

最も考えられる原因:

•ウェブサイトはメンテナンス中です。

•ウェブサイトにプログラミング エラーがあります。

4

3 に答える 3

3

ブラウザに移動します。これは Internet Explorer であると想定し、「わかりやすい http エラーを表示する」を無効にします。これにより、実際のエラー メッセージを確認できます。

ところで。あなたのコードはSQLインジェクションを許可しています。SQL パラメータを使用するか、一重引用符などの一部の文字を置き換えます。

于 2011-04-24T09:10:41.467 に答える
2

わかりやすい HTTP エラーの無効化、オン エラー レジュームの削除、および SQL インジェクションの処理に関するポイントはすべて正しいので、何が問題なのかを推測しすぎる前にそれらを実行する必要がありますが、VB で 1 つのことが際立っています。スクリプト コード ( の ASP クラスに組み込まれている言語<% %>)。

それが Response.Write() の使用です。

これにより、コードがブラウザーに出力を返すことができるようになります。あなたがラインを持っているとき:

Response.Write(cmd)

cmd オブジェクトの文字列表現をブラウザに送り返しています。これにより、サーバー側のページの作成が簡単に中断される可能性があります。


より良い仕事をするための 2 つの一般的なアドバイス:

  • ほとんどの単純なページを除いて、ASP ページからコードを削除し、ASP ページが呼び出すスタンドアロン ライブラリにコードを配置する方が通常は適切です。これは確かにデータ アクセス コードに推奨されます。

  • テスト中、VB スクリプト コードを ASP ページから実行する必要はありません。スクリプトをテキスト ファイルにコピーできます。そのファイルの名前を .vbs に変更すると、そのファイルをダブルクリックして VB スクリプトを実行できるようになります。バグに対処するときは、これがずっと便利だといつも思っていました。

于 2011-04-24T09:30:56.370 に答える
1

これは私が今得たエラーです。Microsoft OLE DB Provider for SQL Server エラー '80004005' ログインで要求されたデータベース "AddressDB" を開けません。ログインに失敗しました。/AddressBook/Insert.asp、9 行目 –</p>

SQL認証を使用してみるか、接続文字列がここにあります: www.connectionstrings.com/ を参照するか、セキュリティ設定を変更してください:

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

于 2011-04-25T06:58:47.160 に答える