我在网页上有一个按钮,我只需要一些额外的代码帮助。我想我需要一个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语句。任何人都可以指出我正确的方向,并帮助我放在这里,因为我是编程的新手,并且在这方面没有太多的经验。
此致 贝蒂。
答案 0 :(得分:2)
首先要理解的是,您不应该完全依赖异常处理来验证数据库完整性约束。更好的解决方案是在尝试数据库操作之前尝试验证数据,而不是仅仅触发数据库命令,希望最好并处理可能发生的约束违规。
无论如何,要全面了解异常处理,请参阅MSDN
答案 1 :(得分:0)
您可以阻止用户使用成功完成存储过程时清除的session
变量返回上一页。
然后在页面加载时检查会话变量 - 如果没有设置,那么response.redirect
到主页?