いくつかの列を持つテーブルがあり、テーブルに重複がないことを確認するために、それらの列の3つに一意キーを設定しました。今、try / catchを使用して例外を飲み込み、重複をスローして更新を続行するforeach
のが良い方法かどうか疑問に思っていました。
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");
}
または、挿入クエリ内でSELECTを実行して、行が存在するかどうか、および挿入をスキップするかどうかを確認する必要がありますか?データ検証の一部として例外を使用するのは良くないことを読みましたが、そのように使用されることが想定されています(たとえば、C#でファイルロックをチェックする方法はtry / catchで使用されることになっています)。