1

我在网页上有一个按钮,我只需要一些额外代码的帮助。我想我需要一个 TRY, CATCH 语句?,这就是我目前所拥有的:

我有一个简单的网页,其中有一个按钮,按下该按钮时,用户可以通过存储过程将数据添加到数据库表中。按下此按钮后,将显示一个弹出消息框,让用户知道数据已通过。然后,用户需要按此消息框中的“确定”按钮,然后将他们定向到站点的主页。这工作正常。

代码在这里:

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”的唯一索引阻止用户在当天多次提交此数据。

当我现在运行网页时,我在浏览器中收到以下消息:

无法在具有唯一索引“DupRecords”的对象“dbo.GasRawData”中插入重复的键行。该语句已终止。

我认为的解决方案是在 btnAddRawData_Click 代码中添加一个 TRY、CATCH 语句。谁能指出我正确的方向并帮助我放在这里,因为我是编程新手并且在这方面没有太多经验。

问候贝蒂。

4

2 回答 2

2

首先要了解的是,您不应该完全依赖异常处理来验证数据库完整性约束。更好的解决方案是在尝试 DB 操作之前尝试并验证数据,而不是仅仅触发 DB 命令,希望获得最好的结果并处理可能发生的约束违规。

无论如何,有关异常处理的全面介绍,请参阅MSDN

于 2011-10-31T12:21:17.643 回答
0

可以session通过使用在成功完成存储过程时清除的变量来阻止用户返回上一页。

然后在页面加载时检查会话变量 - 如果未设置则response.redirect到主页?

于 2011-10-31T13:15:56.537 回答