0

您好,现在我正在使用 C# 进行编程并正在为他们的帐户注册用户。我已经完成了向 sql 插入值,现在我想检查该值是否存在?表详细信息:

Username              Password
Peter                 abc  
Hannah                abd 
John                  bdf 

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

4

4 回答 4

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 是在用户名上创建唯一索引,并使其因违反唯一约束而失败。您可以简单地捕获异常并显示用户友好的消息。

于 2012-08-31T16:37:28.623 回答
2

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

无论如何,这很简单:

SELECT COUNT(*) from UserTable where Username = 'Peter'

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

于 2012-08-31T16:37:50.697 回答
0
SELECT TOP 1 Username FROM mytable WHERE Username='Peter'

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

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

于 2012-08-31T16:36:37.813 回答
-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

`

于 2012-08-31T16:40:35.143 回答