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 サーバーは、その情報を VB に戻して使用することはありません。

主キーの値を利用できるようにする 1 つの方法は、そのデータをプログラムの早い段階で変数 (おそらく既に使用している) に格納し、それらの変数を使用してエラー メッセージを作成することです。

おそらく他の方法があります。このセクションの前にさらに多くのコードを提供していただければ、さらに支援できる可能性があります。この提案がお客様のニーズに合わない場合は、デメリットをお知らせください。

于 2010-02-20T22:00:08.010 に答える