如何在sql表上检查值?

时间:2012-08-31 16:34:59

标签: c# sql

您现在正在使用C#进行编程并让用户注册其帐户。我已经完成了对sql的插入值,现在我想检查值是否存在? 表格细节:

Username              Password
Peter                 abc  
Hannah                abd 
John                  bdf 

我建议使用一种简单的方法将Username设置为主键,并使用try catch错误来检测它。但我想找到找到我的用户名存在的具体方法。 TKS

4 个答案:

答案 0 :(得分:3)

如果要在尝试插入之前检查该值是否存在,可以编写如下的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是在用户名上创建唯一索引,并由于违反唯一约束而使其失败。您可以简单地捕获异常并显示用户友好的消息。

答案 1 :(得分:2)

您不希望将用户名设为主键。但是,应该使其成为唯一索引。

无论如何,这很简单:

SELECT COUNT(*) from UserTable where Username = 'Peter'
如果用户名存在,

...将返回1(或更多),如果不存在则返回0。

答案 2 :(得分:0)

SELECT TOP 1 Username FROM mytable WHERE Username='Peter'

然后您可以使用代码来确定是否有任何行返回。

您可以使用此方法进行登录。但是,对于注册新用户,无法保证在您检查的时间和插入新记录的时间之间没有人会使用用户名。所以无论如何,尝试抓住是不可避免的。

答案 3 :(得分:-1)

您可以使用

 `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

`