您好,现在我正在使用 C# 进行编程并正在为他们的帐户注册用户。我已经完成了向 sql 插入值,现在我想检查该值是否存在?表详细信息:
Username Password
Peter abc
Hannah abd
John bdf
我推荐一种简单的方法将用户名设置为主键并使用 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
`