Данные об исключениях SQL - PullRequest
2 голосов
/ 10 февраля 2010

Я написал программу, которая использует класс исключений 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

1 Ответ

2 голосов
/ 21 февраля 2010

Я не верю, что объект sqlexception содержит данные, которые вы ищете. Он содержит имя ключа в тексте ошибки, но не имеет значений внутри него. SQL-сервер не передает эту информацию обратно в VB для использования.

Одним из способов получения значений первичного ключа является сохранение этих данных в переменных ранее в программе (которые вы, вероятно, уже имеете) и использование этих переменных при создании сообщения об ошибке.

Возможно, есть и другие способы. Если вы предоставите больше кода перед этим разделом, мы сможем помочь вам больше. Если это предложение не соответствует вашим потребностям, дайте мне знать, каковы недостатки, и мы можем пойти дальше.

...