在唯一键约束
问题描述:
我建立了一个逻辑,如果我输入重复的值,我应该得到的消息需要帮助的:“用户名已存在,换个名称” 但我得到不同的信息:“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,尝试插入前检查重复的用户。如果两个用户同时尝试创建相同的用户,您仍然需要捕获关键约束例外情况。
答
由于您尝试使用相同的登录名插入用户,因此会发生异常。你有两种选择:
a。在插入数据之前明确检查用户是否存在(附加选择查询)
b。捕获异常“违反UNIQUE KEY约束”,然后显示您的自定义消息
但我希望该消息应该是“用户名已存在,尝试另一个名称”,但我没有得到我的自定义消息。 – 2009-01-25 12:14:27