如何防止重复的数据值出现在MySQL数据库

本文关键字:MySQL 数据库 数据 何防止 | 更新日期: 2023-09-27 18:02:00

我目前有一个asp.net网站。但是我注意到,在我的注册页面中,用户可以使用相同的用户名多次注册。因此,我想知道是否有一种方法可以防止用户使用相同的用户名多次注册。

我知道我可以设置一个列在我的数据库有一个主键…但是如果我想让多个列都有主键,我该怎么做呢?

这是插入代码....

    MySqlCommand command = mcon.CreateCommand();
    mcon.Open();
    command.CommandText = "insert into pointofcontact (FirstName, LastName,        EmailAddress, ContactNumber, BackupContactNumber, Address, Gender, Username, Password, Status, ProfilePic) values(?firstname, ?lastname, ?emailaddress, ?contactnumber, ?backupcontactnumber, ?address, ?gender, ?username, ?password, ?status, ?image)";
    command.Parameters.AddWithValue("?firstname", firstname);
    command.Parameters.AddWithValue("?lastname", lastname);
    command.Parameters.AddWithValue("?emailaddress", email);
    command.Parameters.AddWithValue("?contactnumber", mobileNumber);
    command.Parameters.AddWithValue("?backupcontactnumber", backupNumber);
    command.Parameters.AddWithValue("?address", homeAddress);
    command.Parameters.AddWithValue("?gender", gender);
    command.Parameters.AddWithValue("?username", username);
    command.Parameters.AddWithValue("?password", password);
    command.Parameters.AddWithValue("?status", status);
    command.Parameters.AddWithValue("?image", imageName);
    command.ExecuteNonQuery();
    mcon.Close();
    MySqlDataReader reader = null;
    mcon.Open();
    MySqlCommand command2 = mcon.CreateCommand();
    command2.CommandText = "select * from pointofcontact where Username = ?username";
    command2.Parameters.AddWithValue("?username", tbUsername.Text);
    reader = command2.ExecuteReader();
    if (reader != null && reader.HasRows)
    {
        lblValidate.Text = "Username already exists.";
    }
    Response.Redirect("IndexAfterLogin1.aspx");

用户输入的数据能够被插入到我的MySQL数据库中,但是输入的数据能够为不同用户的Username和Email字段重复,我不希望发生这种情况

如何防止重复的数据值出现在MySQL数据库

为此,可以在插入前添加unique key in表else create a function check in database就是这样

将字段username作为主键或唯一键。该字段

不允许重复条目

按如下顺序编写代码:

try
{
 MySqlDataReader reader = null;
 mcon.Open();
 MySqlCommand command2 = mcon.CreateCommand();
 command2.CommandText = "select * from pointofcontact where Username = ?username";
 command2.Parameters.AddWithValue("?username", tbUsername.Text);
 reader = command2.ExecuteReader();
 if (reader != null && reader.HasRows)
 {
    lblValidate.Text = "Username already exists.";
    **return;**
 }
 else
 {
  MySqlCommand command = mcon.CreateCommand();
  command.CommandText = "insert into pointofcontact (FirstName, LastName,        EmailAddress, ContactNumber, BackupContactNumber, Address, Gender, Username, Password, Status, ProfilePic) values(?firstname, ?lastname, ?emailaddress, ?contactnumber, ?backupcontactnumber, ?address, ?gender, ?username, ?password, ?status, ?image)";
  command.Parameters.AddWithValue("?firstname", firstname);
  command.Parameters.AddWithValue("?lastname", lastname);
  command.Parameters.AddWithValue("?emailaddress", email);
  command.Parameters.AddWithValue("?contactnumber", mobileNumber);
  command.Parameters.AddWithValue("?backupcontactnumber", backupNumber);
  command.Parameters.AddWithValue("?address", homeAddress);
  command.Parameters.AddWithValue("?gender", gender);
  command.Parameters.AddWithValue("?username", username);
  command.Parameters.AddWithValue("?password", password);
  command.Parameters.AddWithValue("?status", status);
  command.Parameters.AddWithValue("?image", imageName);
  command.ExecuteNonQuery();
  }
}
catch
{
  ....
}
finally
{
 mycon.Close();
}