.NET按钮控件,OnClick事件:(试试,Catch语句?)

时间:2011-10-31 11:45:22

标签: asp.net vb.net asp.net-controls

我在网页上有一个按钮,我只需要一些额外的代码帮助。我想我需要一个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所在的页面并再次按下它来完成。),我创建了一个名为UNIQUE INDEX的名称'DupRecords'用于阻止用户在当天多次提交此数据。

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

无法在对象'dbo.GasRawData'中插入具有唯一索引'DupRecords'的重复键行。 声明已经终止。

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

此致 贝蒂。

2 个答案:

答案 0 :(得分:2)

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

无论如何,要全面了解异常处理,请参阅MSDN

答案 1 :(得分:0)

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

然后在页面加载时检查会话变量 - 如果没有设置,那么response.redirect到主页?