0

OleDB を使用して Access データベースに接続するアプリがあります。一意のインデックスがある重複レコードを挿入するためのエラー処理を作成しようとしています。

このエラーがスローされると、例外でエラー コード -2147467259 が表示されます。ただし、他のエラーでも同じエラー コードが返されます。たとえば、データベースがいっぱい、または列がありません。

私のすべての部分が信頼できないと言っているエラーメッセージ自体を使用せずに、これらの異なるエラーを判断する方法はありますか.

を調べましたが.innerexception、重複を挿入する場合、内部例外はありません。

.SQLState プロパティも調べましたが、これは 4.0 フレームワークでは実際には使用されていない古いメソッドのようです。これを適用することもできますが、目的のトライ キャッチではなく、エラー時に使用する可能性があります。

現時点での私のコード:

            Try
                Sender.cmdOLEDB.ExecuteNonQuery()
            Catch ex As OleDbException

            End Try
4

1 に答える 1

0

あなたの根底にある問題がここでの本当の問題であると主張する男になる危険を冒して... DBがここでの本当の問題です。

生成されたキーではなく、何らかの自然キーが使用されていると仮定します(そうしないと、重複キーの例外が発生しません)。テーブルを変更することをお勧めします。これにより、不適切な PK のために挿入が失敗した理由を突き止めようとする必要がなくなります。

同僚が保存メソッドを次のように実装したこのロジックに似たものを見たことがあります。

try
{
    insertCommand.ExecuteNonQuery();
}
catch(Exception ex)
{
    updateCommand.ExecuteNonQuery();
}

これは... 悪いです。

于 2013-07-16T14:31:06.897 に答える