申し込みフォームを作成しましたが、重複した名前を作成しようとしたときにそれができません。しかし、私は、ユーザー名がすでに取得されていることをユーザーに知らせて、それらを許可しません。それ、どうやったら出来るの?相続人は私が使用するコード :複製アイテムがデータベースに追加しようとしたときにエラーを受け入れる
SqlConnection con = new SqlConnection(@"NOTSHOWING");
SqlCommand cmd = new SqlCommand("insert into Schools(Username,Password,Security,SecurityQuestion) values ('" + bunifuMaterialTextbox1.Text + "','" + bunifuMaterialTextbox2.Text + "','" + bunifuMaterialTextbox3.Text + "','" + bunifuDropdown1.selectedValue + "')", con);
Form5 ss = new Form5();
ss.Show();
Thread.Sleep(5000);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
そして、私が取得エラー:
System.Data.SqlClient.SqlException: 'Violation of PRIMARY KEY constraint
'NOTSHOWING'. Cannot insert duplicate key in object 'dbo.Schools'. The
duplicate key value is (NAME).
The statement has been terminated.'
そしてまた、私は試してみて、複数のブロックをキャッチすることができますか?いいね:
try
{
}
catch
{
}
try
{
}
catch
{
}
ロジックとして例外をトラップするのは一般的に設計が貧弱です。私は、存在しない場合はユーザーを挿入し、成功を判断するためにリターンコードを使用するストアドプロシージャを記述します。 – Crowcoder
Crowcoderは、通常の状況下で発生すると予想されるものに例外を頼ってはならないというのは当然です。ストアドプロシージャを使用するのではなく、データベースにクエリを発行して、その名前のユーザーが存在するかどうかを判断し、一致するユーザーがない場合にのみINSERTを実行します。 – StriplingWarrior
常にSQLインジェクションを避けるためにパラメータを使用してください。その表示フォームとスリープコールを取り除く、それはあなたのコードをブロックし、ユーザーを悩ます。 – LarsTech