2009-01-25 186 views
2

我建立了一個邏輯,如果我輸入重複的值,我應該得到的消息需要幫助的:「用戶名已存在,換個名稱」 但我得到不同的信息:「UNIQUE KEY約束衝突」 UserName'。不能在對象'Login'中插入重複鍵,該語句已被終止。「在表登錄用戶名設置爲唯一鍵。這裏是代碼:在唯一鍵約束

protected void BtnSubmit_Click(object sender, EventArgs e) 
{ 
    if (!Page.IsValid) 
     return; 

    NewuserBAL NUB = new NewuserBAL(); 

    int intResult = 0; 

    string UserName = TxtUserName.Text; 
    string Password = PWD.Text; 
    string EmailId = Email.Text; 


    try 
    { 
     intResult=NUB.newinsert(UserName, Password, EmailId); 
     if (intResult > 0) 

      lbldisplay.Text = "New Account Created Successfully"; 
     else 
      lbldisplay.Text = "UserName[<b>"+TxtUserName.Text+"</b>] already exists,try another name";     

     TxtUserName.Text = ""; 
     PWD.Text = ""; 
     CnfrmPwd.Text = ""; 
     Email.Text = ""; 
    } 



    catch(Exception ee) 
    { 
     lbldisplay.Text = ee.Message.ToString(); 


    } 

    finally 
    { 
     NUB = null; 


    } 

請有人幫助我,我犯了錯誤。

感謝, Masum

回答

0

您的數據庫(正確地)捕捉和防止嘗試,因爲用戶名設置爲一個獨特的鍵添加重複的用戶。這是一件好事。你的程序應該捕獲異常,插入它,並相應地通知用戶。

編輯:或,as empi says,嘗試插入前檢查重複的用戶。如果兩個用戶同時嘗試創建相同的用戶,您仍然需要捕獲關鍵約束例外情況。

+0

但我希望該消息應該是「用戶名已存在,嘗試另一個名稱」,但我沒有得到我的自定義消息。 – 2009-01-25 12:14:27

3

由於您嘗試使用相同的登錄名插入用戶,因此會發生異常。你有兩種選擇:

a。在插入數據之前明確檢查用戶是否存在(附加選擇查詢)

b。捕獲異常「違反UNIQUE KEY約束」,然後顯示您的自定義消息