2010-02-10 65 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以供使用。

使主鍵值可用的一種方法是將該數據存儲在程序中較早的變量(您可能已有的變量)中,並在構造錯誤消息時使用這些變量。

可能還有其他方法。如果您在本節之前提供更多代碼,我們可能會提供更多幫助。如果這個建議不能滿足您的需求,請告訴我缺點是什麼,我們可以走得更遠。