1

Web ページにボタンがあり、追加のコードで少し助けが必要です。TRY、CATCHステートメントが必要だと思いますか?、これは私がこれまでに持っているものです:

ボタンを押すと、ユーザーはストアドプロシージャを介してDBテーブルにデータを追加できるシンプルなWebページがあります。このボタンを押すと、ポップアップ メッセージ ボックスが表示され、データが渡されたことをユーザーに知らせます。次に、ユーザーはこのメッセージ ボックス内の [OK] ボタンを押す必要があります。これにより、サイトのホームページに移動します。これはうまくいきます。

このコードは次のとおりです。

Protected Sub btnAddRawData_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddRawData.Click

    'database conn, this is linked to the web config file .AppSettings
    Using dbconnection As New SqlConnection(ConfigurationManager.AppSettings("dbconnection"))
        dbconnection.Open()

        'command to state the stored procedure and the name of the stored procedure
        Using dbcommand As SqlCommand = dbconnection.CreateCommand
            With dbcommand
                .CommandType = CommandType.StoredProcedure
                .CommandText = "RawData_Insert"

                'simply execute the query
                dbcommand.ExecuteNonQuery()

                'Code to make a pop up work. It enables us to use and call the function
                'located on the main Rawdata.aspx page.
                Dim cs As ClientScriptManager = Page.ClientScript
                Dim csname1 As String = "PopupScript"
                Dim cstype As Type = Me.GetType()
                Dim cstext1 As New StringBuilder()
                cstext1.Append("success();")
                cs.RegisterStartupScript(cstype, csname1, cstext1.ToString())

                'redirect to the main home page
                Response.Redirect("~/default.aspx?")

            End With
        End Using
    End Using

End Sub

ユーザーがデータベースに重複したレコードを入力することを望まないので (これは、ユーザーが btnAddRawData_Click があるページに戻ってもう一度押すことで実行できます)、「DupRecords」という名前の UNIQUE INDEX を作成しました。ユーザーがその日にこのデータを複数回コミットするのを防ぎます。

Web ページを実行すると、ブラウザに次のメッセージが表示されます。

一意のインデックス 'DupRecords' を持つオブジェクト 'dbo.GasRawData' に重複するキー行を挿入することはできません。ステートメントは終了されました。

私が考える解決策は、TRY、CATCH ステートメントを btnAddRawData_Click コードに追加することです。私はプログラミングが初めてで、この分野での経験があまりないので、誰かが私を正しい方向に向けてここに置くのを手伝ってくれますか?

よろしくベティ。

4

2 に答える 2

2

最初に理解しておくべきことは、DB 整合性制約の検証などの例外処理に完全に依存するべきではないということです。より良い解決策は、DB コマンドを実行するだけではなく、DB 操作を試みる前にデータを検証して検証し、最善の結果を期待して、発生する可能性のある制約違反を処理することです。

とにかく、例外処理の包括的な紹介については、MSDNを参照してください。

于 2011-10-31T12:21:17.643 に答える
0

ストアド プロシージャが正常に完了するとクリアされる変数を使用して、ユーザーが前のページに戻らないようにすることができます。session

次に、ページの読み込み時にセッション変数を確認します。設定されていない場合はresponse.redirect、ホームページに移動しますか?

于 2011-10-31T13:15:56.537 に答える