如何在c#中使用mysql验证数据库中的现有用户名?

时间:2017-02-16 23:52:07

标签: c# mysql database

我在c#中做了一个注册表 代码工作得很好,但问题是即使用户名 它已经存在于数据库中,它仍然可以复制用户名。 如何为用户名添加重复值限制? 所以这是我的代码ps。我没有添加例外,因为它太长了。

 string condense = "datasource=localhost;port=3306;username=root;password=''";
        string milk = "insert into empaccount.empinfo(IDNUMBER,email,username,password,firstname,lastname,cnumber) values ('" + this.idnumber.Text + "','" + email.Text + "','" + username.Text + "','" + password.Text + "','" + firstname.Text + "','" + this.lastname.Text + "','" + contactno.Text + "');";
        MySqlConnection conDatabase = new MySqlConnection(condense);
        MySqlCommand cmdDatabase = new MySqlCommand(milk, conDatabase);
        MySqlDataReader myReader;

        if (string.IsNullOrEmpty(idnumber.Text))
        {
            idnumber.Text = " Please generate an id number";
        }
          else
         {
             conDatabase.Open();
             myReader = cmdDatabase.ExecuteReader();
             MessageBox.Show("You're Registered!", "Successful!", MessageBoxButtons.OK, MessageBoxIcon.Information);

             while (myReader.Read())
             {

             }
         }

1 个答案:

答案 0 :(得分:0)

您需要使用您用于创建表的任何数据库编辑器向表中添加唯一限制(约束)。然后,如果使用了用户名,则捕获应用程序抛出的异常。

基本上,如果已经有一些用户名,并且您对表中的用户名字段有唯一约束,那么当您尝试添加时,程序将抛出异​​常。这是一个例子:

另外,如果您正在进行插入查询,则不需要ExecuteRead()。只需执行ExecuteNonQuery(),它就可以运行查询而无需返回任何内容。

    string condense = "datasource=localhost;port=3306;username=root;password=''";
    string milk = "insert into empaccount.empinfo(IDNUMBER,email,username,password,firstname,lastname,cnumber) values ('" + this.idnumber.Text + "','" + email.Text + "','" + username.Text + "','" + password.Text + "','" + firstname.Text + "','" + this.lastname.Text + "','" + contactno.Text + "');";
    MySqlConnection conDatabase = new MySqlConnection(condense);
    MySqlCommand cmdDatabase = new MySqlCommand(milk, conDatabase);
    MySqlDataReader myReader;

    if (string.IsNullOrEmpty(idnumber.Text))
    {
        idnumber.Text = " Please generate an id number";
    }
    else
    {
      conDatabase.Open();
      try {
        cmdDatabase.ExecuteNonQuery();
      }
      catch {
        //Username is taken
      }
      MessageBox.Show("You're Registered!", "Successful!", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }