0

エラー処理に問題があります。VB プログラムを使用して、SQL Server 2008 R2 テーブルに重複キーを追加したいと考えています。私は次のコードを使用しています:

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 サーバーの構成の問題なのか、Visual Studio の構成の問題なのかはわかりません。

プログラムが CATCH セクションにジャンプしないことを強調したいと思います。プログラムは、「Dim count As Integer = insertCommand.ExecuteNonQuery ()」という行で停止します。写真を送信できないのは残念です。申し訳ありません

4

1 に答える 1