2016-08-12 76 views
2

我目前有一個asp.net網站。但是我注意到,在我的註冊頁面中,用戶可以使用相同的用戶名進行多次註冊。因此,我想知道是否有辦法阻止用戶使用相同的用戶名多次註冊。如何防止重複的數據值出現在MySQL數據庫中

我知道我可以在我的數據庫中設置一個列來創建主鍵......但是,如果我想讓多個列具有主鍵,我該怎麼辦?

這是我的插入代碼....

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數據庫,但輸入的數據能夠被重複的用戶名和電子郵件領域爲不同的用戶,我不希望這種情況發生。

+0

的可能的複製[?我如何指定MySQL中多列唯一約束](http://stackoverflow.com/questions/635937/how-do-i-specify-unique-constraint-for-multiple-columns-in-mysql) –

+1

至少爲數據庫添加一些約束,所以當你嘗試插入重複時,你的代碼會引發異常。 –

回答

0

爲了這個目的,你可以在表中其他create a function添加​​插入這就是它

0

使字段用戶名作爲主要或唯一鍵之前,數據庫檢查。它不會允許該場

0

令你的代碼重複的條目如下:

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(); 
} 
+0

請問我爲編碼的「catch」部分輸入了什麼內容? :) – MrStutterz

+0

嘗試抓取最後塊始終是首選 –

相關問題