我遇到了错误处理问题。通过VB程序,我想将重复键添加到SQL Server 2008 R2表中。我使用下面的代码:Visual Basic尝试捕获重复密钥未捕获
Public Shared Function AddCatPlanilla(ByVal CatPlanilla As CatPlanilla) As Boolean
Dim connection As SqlConnection = EnterpriseDB.GetConnection
Dim insertStatement As String _ = "INSERT [dbo].[CatPlanilla] " _
& "([CodEmpr], [TipoCatalogo], [CodAsoc], [Descripcion], [DescripcionCorta]) " _
& "VALUES (@CodEmpr, @TipoCatalogo, @CodAsoc, @Descripcion, @DescripcionCorta)"
Dim insertCommand As New SqlCommand(insertStatement, connection)
insertCommand.CommandType = CommandType.Text
insertCommand.Parameters.AddWithValue("@CodEmpr", CatPlanilla.m_CodEmpr)
insertCommand.Parameters.AddWithValue("@TipoCatalogo", CatPlanilla.m_TipoCatalogo)
insertCommand.Parameters.AddWithValue("@CodAsoc", CatPlanilla.m_CodAsoc)
insertCommand.Parameters.AddWithValue("@Descripcion", CatPlanilla.m_Descripcion)
insertCommand.Parameters.AddWithValue("@DescripcionCorta", CatPlanilla.m_DescripcionCorta)
Try
connection.Open()
Dim count As Integer = insertCommand.ExecuteNonQuery()
If count > 0 Then
Return True
Else
Return False
End If
Catch ex As SqlException
Throw ex
Finally
connection.Close()
End Try
End Function
当我要添加重复的键,的SQLException不捕获错误,并在屏幕上显示以下信息(停止程序):
System.Data.SqlClient.SqlException occurred
Class=14
ErrorCode=-2146232060
HResult=-2146232060
LineNumber=1
Message=Cannot insert duplicate key row in object 'dbo.CatPlanilla' with unique index
'IX_CatPlanilla'. The duplicate key value is (001, LT, Lima).
The statement has been terminated.
我不知道是什么原因造成的,或者这是SQL Server配置还是Visual Studio配置的问题。
我想强调程序不会跳转到CATCH部分。该计划停止在这一行:“DIM计数为整数= insertCommand.ExecuteNonQuery()” 什么遗憾,我无法发送图片,对不起
您正在抛出异常 - 当您尝试重复键时想要发生什么? – andrewb
我想程序去捕捉部分,但不是,程序停在行说:“Dim count As Integer = insertCommand.ExecuteNonQuery()” – user2705541