繁体   English   中英

如何检查SQL表上是否存在值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM