[英]How to check value exists on sql table?
嗨,我现在使用C#进行即时通讯编程,并让用户注册其帐户。 我已经用sql插入值了,现在我想检查该值是否存在? 表格明细:
Username Password
Peter abc
Hannah abd
John bdf
建议使用一种简单的方法将Username设置为主键,并使用try catch错误进行检测。 但是我想找到找到我的用户名存在的特定方式。 TKS
如果要在尝试插入之前检查该值是否存在,可以编写如下的SQL语句:
if not exists (select 1 from table where username=@username)
begin
insert into ...
end
else
begin
RAISERROR ('User already exists. Pick another one.', -- Message text.
16, -- Severity.
1 -- State.
);
end
如果由于用户名已经存在而导致插入失败,则只需在客户端输出Exception
消息即可。
try
{
//do the insert
}
catch(Exception ex)
{
//Output ex.Message, it will say: User already exists. Pick another one.
}
IMO的一种更好的方法是在用户名上创建唯一索引,并使其由于违反唯一约束而失败。 您可以简单地捕获异常并显示一条用户友好的消息。
您不想将用户名用作主键。 但是,您应该使其成为唯一索引。
无论如何,这很简单:
SELECT COUNT(*) from UserTable where Username = 'Peter'
...如果用户名存在,则返回1(或更多),否则返回0。
SELECT TOP 1 Username FROM mytable WHERE Username='Peter'
然后,您可以使用代码确定是否返回任何行。
您可以使用这种方法进行登录。 但是对于注册新用户,并不能保证在您检查和插入新记录之间,没有人会使用用户名。 因此,无论如何,try ... catch是不可避免的。
您可以使用
`IF Exists(Select Top 1 * from Users where username = @userNameYouWantToCheck)
Begin
... Do what you want to do if it exists...
END
ELSE
BEGIN
...catch error here...
END
`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.