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

您确定要在登录页面进行验证吗?我认为完成的验证是注册页面。

您可以通过两种方式进行此验证

1-->在用户输入用户名后进行ajax调用,如果用户名已经存在,则显示重复的消息。(同时用户将提供密码,因此将节省用户时间)。

2--> 在第二种方法中,您可以完全在服务器端进行验证。获取用户名并将其与现有用户名进行比较并相应地显示消息。

于 2012-07-27T09:49:19.060 回答
-1

在用户名文本框的 textchanged 事件上,您只需从数据库中查询

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

如果存在则 jst 显示错误消息并禁用保存按钮,如果不存在则 jst 启用保存按钮并保存它

于 2012-07-27T09:40:13.620 回答