1

私のデータベースには2つの固有のフィールドがあり、ユーザーが私のWebページを介してこれらの列の一方(または両方)にすでに存在する値を追加しようとする可能性があります。文字通り、2つのテキストボックスがあり、これらはSQLの2つの列を参照します。

エラーをキャッチして、重複が作成される場所で許可されていない単語をユーザーに表示したいと思います。

SQLを使用すると、重複を入力できなくなりますが、最初の試行でエラーが発生します。つまり、ユーザーが2つの単語を入力しようとして、両方が重複している場合、SQLは最初のテキストボックスでエラーになります。つまり、ユーザーはtextBox1の値を更新し、再試行してから2番目のテキストボックスについて通知を受けることができます。これは遅いのでユーザーには良くありませんが、最善のアプローチが何であるかわかりません。

4

2 に答える 2

1

私の意見では、あなたの最後の防御はデータベースです!クエリがそこに到達するのを防ぐ必要があります。

私の場合、データベースにクエリを実行し、これら2つの列のすべての行の2つの値を取得します。

次に、ユーザーが送信しようとしたときに、リストをチェックして、リストが存在するかどうかを確認します。これは、例外がスローされないことを意味します。次に、この情報を画面に表示する方法を決定できます。

もちろん、これは行数によっては素晴らしいことです。数百万の行がある場合、これはあまり良くない可能性があり、最初にスカラー変数を使用してデータベースにpingを実行し、値がすでに存在するかどうかを確認することをお勧めします。

于 2013-03-27T10:15:22.393 に答える
0

SqlExceptionは非常に冗長であり、例外の原因となったいくつかの特定のフィールドではなく、完全なスタックトレースを取得します。

またSqlException、内部で失敗するストアドプロシージャをヒットした場合のように、十分に指定できない場合もあります。

最善のアイデアは、DBにアクセスする前に、フィールド値、FK制約、nullチェックではなく、あらゆる種類の検証を行うことです。

大きなパフォーマンスのボトルネックであるため、データベースをヒットしてから、何らかの例外のためにユーザーに通知することは、まったくお勧めできません。

于 2013-03-27T08:57:41.793 に答える