私はいくつかの列を持つテーブルを持っており、これらの列の3つに一意キーを設定して重複がないことを確認していますテーブル。今私はtry/catchを使用して例外をスローして重複をスローし、次の行の挿入を更新し続けるのかと疑問に思っていたforeach
は良い方法ですか?データの整合性を検証するための有効な方法としてtry/catchの有無にかかわらず一意のキーを使用
try {
sqlWrite.ExecuteNonQuery();
} catch (SqlException sqlException) {
if (!sqlException.ToString().Contains("Violation of UNIQUE KEY constraint")) {
MessageBox.Show("Error - " + Environment.NewLine + sqlException.ToString(), "Error SQL");
}
} catch (Exception exception) {
MessageBox.Show("Error - " + Environment.NewLine + exception.ToString(), "Error SQL");
}
または、挿入クエリを実行して行が存在するかどうかを確認し、挿入をスキップする必要がありますか?私はあなたのデータ検証の一環として例外を使うのは良いことではないが、そのようなものがいくつかあるはずだと読んだことがある(例えば、How to check For File Lock in C#?はtry/catchと一緒に使われるはずです)。
http://www.mssqltips.com/sqlservertip/2632/checking-for-potential-constraint-violations-before-entering-sql-server-try-and-catch-logic/ –
ありがとうございます。それを読むでしょう。 – MadBoy