2010-02-10 63 views
2

我编写了一个程序,它使用SQL异常类,然后使用它显示主键违例的自定义消息。另外我想要的主键值导致违规。我怎样才能得到sqlexception对象产生异常的所有主键。SQL异常数据

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 

回答

2

我不相信sqlexception对象包含您正在查找的数据。它会在错误文本中考虑键的名称,但它没有任何值。 SQL服务器不会将该信息传递回VB以供使用。

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

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