如何在c#中知道一个名称是否存在于一个特定的sql表中
本文关键字:存在 是否 于一个 表中 sql 一个 | 更新日期: 2023-09-27 18:07:25
我有以下表格:
users: user_userName, user_userEmail, user_password.
我想知道的是用户名是否存在(如果存在,告诉用户创建一个新的,否则他们会在用户的表)后点击按钮c#
using(SqlCommand cmd = new SqlCommand("IF EXISTS (SELECT TOP 1 1 FROM users WHERE user_userName = @userName) SELECT 1 ELSE SELECT 0", connection))
{
cmd.Paramaters.AddWithValue("userName", "TestUserName");
object result = cmd.ExecuteScalar();
if(DBNull.Value.Equals(result) || result == null || (int)result == 0)
{
// user does not exist
}
}
您的方法有一个小缺陷,因为您想首先检查用户帐户是否存在,如果不存在则告诉用户创建一个。
想象这样一个场景,UserA检查了一个不存在的UserName,然后当UserA试图创建一个用户时,如果另一个用户进来并创建了与UserA将要创建的相同的用户名该怎么办?
我建议设计你的应用程序,让你选择用户名或获取用户试图创建的用户名,并检查它,并立即创建它,而不是等待用户创建它一旦它被检查存在等。
您可以为此创建一个存储过程,如下所示.....
CREATE PROCEDURE dbo.Create_UserName
@UserName VARCHAR(100),
@Email VARCHAR(100),
@Password VARCHAR(100),
@Message VARCHAR(1000) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT 1 FROM Users WHERE user_userName = @UserName)
BEGIN
SET @Message = 'User Name already Exist Please try a different User Name';
END
ELSE
BEGIN
INSERT INTO Users (user_userName, user_userEmail, user_password)
VALUES (@UserName,@Email,@Password);
SET @Message = 'User Name is Created Happy Days :)';
END
END
对于LINQ,它是这样的:
User user = list.FirstOrDefault(x => x.UserName == "John");
if (user != null)
{
// Use user
}
else{
// create a new one
}
Using LINQ:
if (db.users.Any(r => r.user_userName == login.Text))
// todo: create user
else
// use this user