2

我编写了一个使用 SQL 异常类的程序,然后使用它显示主键违规的自定义消息。我也想要导致违规的主键值。如何从 sqlexception 对象中获取所有生成异常的主键。

    Catch se As SqlException       
    For i As Integer = 0 To se.Errors.Count - 1
     Select Case se.Errors(i).Number.ToString
      Case "2627" ''Primary Key Violation
        Dim drH As DataRow = _ErrorDataSet.NewRow
        drH.Item("Module") = _mod
        drH.Item("Code") = ""
        drH.Item("Description") = ""
        drH.Item("Error") = "Document Number Already Exists"
        _ErrorDataSet.Rows.Add(drH)
    Next
   End Try
4

1 回答 1

2

我不相信 sqlexception 对象包含您要查找的数据。它确实包含错误文本中的键名,但其中没有任何值。SQL Server 不会将该信息传递回 VB 以供使用。

使主键值可用的一种方法是将该数据存储在程序早期的变量中(您可能已经拥有),并在构建错误消息时使用这些变量。

可能还有其他方法。如果您在本节之前提供更多代码,我们可能会提供更多帮助。如果此建议不能满足您的需求,请告诉我缺点是什么,我们可以更进一步。

于 2010-02-20T22:00:08.010 回答