0

卒業論文用の簡単なログインページを作成していますが、文字の長さとパスワードの不一致の検証はすでに完了しています..私の問題は、指定されたユーザー名がデータベースに既に存在するかどうかをテストする方法です.... C# でコーディングしており、データベースに SQL 管理スタジオ R2 を利用しています....

private void add_Click(object sender, EventArgs e)
{
  string UserName = textBox1.Text;
  string Password = maskedTextBox1.Text;

  if (Password.Length <= MiN_LENGHT && UserName.Length <= MiN_LENGHT)
  {
    errorProvider1.SetError(textBox1, "User name must be at least 8 character");
    errorProvider2.SetError(maskedTextBox1, @"Password must be at least 8 character");

    maskedTextBox1.Clear();
    maskedTextBox2.Clear();
  }
  else if (maskedTextBox1.Text != maskedTextBox2.Text)
  {
    errorProvider1.SetError(maskedTextBox2, "Passwords don't match");

    maskedTextBox1.Clear();
    maskedTextBox2.Clear();
  }
  else if (textBox1.Text == "" || maskedTextBox1.Text == "" || 
           maskedTextBox2.Text == "")
  {
    MessageBox.Show("Please fill up the required records", "Information", 
                     MessageBoxButtons.OK, MessageBoxIcon.Warning);
  }
  else
  {
    x.da.InsertCommand = new SqlCommand(@"Insert into PlayerList 
                                         VALUES(@uname,@pw,@repw)", x.cs);
    x.da.InsertCommand.Parameters.Add("@uname", SqlDbType.NVarChar).Value =
                                         textBox1.Text;
    x.da.InsertCommand.Parameters.Add("@pw", SqlDbType.NVarChar).Value =  
                                         maskedTextBox1.Text;
    x.da.InsertCommand.Parameters.Add("@repw", SqlDbType.NVarChar).Value = 
                                         maskedTextBox2.Text;
    x.cs.Open();
    x.da.InsertCommand.ExecuteNonQuery();
    MessageBox.Show("Record Added", "Information", MessageBoxButtons.OK, 
                                         MessageBoxIcon.Information);
    button3.Enabled = true;
    x.da.SelectCommand = new SqlCommand( @"Select PlayerCode, uname from 
                                         PlayerList", x.cs);
    x.ds.Clear();
    x.da.Fill(x.ds);
    dataGridView1.DataSource = x.ds.Tables[0];
    x.cs.Close();
  }
}

あなたが助けてくれることを願っています....

4

4 に答える 4

2

データベースのユーザー名フィールドに UNIQUE CONSTRAINT または INDEX を追加して例外をキャッチするか、事前に検索することができます。競合状態を回避するため、最初の選択肢をお勧めしますが、検索を実行することを妨げるものではありません。

于 2012-07-27T09:31:54.340 に答える
1

新しいユーザーを保存する前に、まずそのユーザー名がデータベースに既に存在するかどうかを確認し、ユーザーが存在しない場合はそのレコードを保存します。

そのユーザー名が存在する場合は、保存をスキップし、そのユーザー名が既に使用されていることを示すわかりやすいメッセージをユーザーに表示します

于 2012-07-27T09:34:05.167 に答える
0

ログインページで検証を実行してもよろしいですか? この検証が行われたのはサインアップページだと思います。

この検証は 2 つの方法で行うことができます

1--> ユーザーがユーザー名を入力した後に ajax 呼び出しを実行し、ユーザー名が既に存在する場合は重複したメッセージを表示します (ユーザーがパスワードを提供する間、ユーザーの時間が節約されます)。

2--> 2 番目のアプローチでは、サーバー側で完全に検証を行うことができます。ユーザー名を取得して既存のユーザー名と比較し、それに応じてメッセージを表示します。

于 2012-07-27T09:49:19.060 に答える
-1

ユーザー名テキストボックスの textchanged イベントで、データベースからクエリするだけです

 select username from user_mst where username='"+textusernm.text+"';

そこにある場合はjstがエラーメッセージを表示し、保存ボタンを無効にし、そうでない場合は保存ボタンを有効にして保存します

于 2012-07-27T09:40:13.620 に答える