在唯一键约束

问题描述:

我建立了一个逻辑,如果我输入重复的值,我应该得到的消息需要帮助的:“用户名已存在,换个名称” 但我得到不同的信息:“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

您的数据库(正确地)捕捉和防止尝试,因为用户名设置为一个独特的键添加重复的用户。这是一件好事。你的程序应该捕获异常,插入它,并相应地通知用户。

编辑:或,as empi says,尝试插入前检查重复的用户。如果两个用户同时尝试创建相同的用户,您仍然需要捕获关键约束例外情况。

+0

但我希望该消息应该是“用户名已存在,尝试另一个名称”,但我没有得到我的自定义消息。 – 2009-01-25 12:14:27

由于您尝试使用相同的登录名插入用户,因此会发生异常。你有两种选择:

a。在插入数据之前明确检查用户是否存在(附加选择查询)

b。捕获异常“违反UNIQUE KEY约束”,然后显示您的自定义消息