3

我有以下函数来检查我的 SQL 表中是否存在用户

private static bool  userexists(string user)
{
    bool userexists = false;

    SqlCommand c = new SqlCommand("SELECT COUNT(*) from UserTable where Username = @user");
    c.Parameters.Add(new SqlParameter("@user",user));
    using (SqlConnection con = new SqlConnection(Properties.Settings.Default.connectionString))
    {
        userexists = (bool)c.ExecuteScalar();
        return userexists;
    }
}

即使用户存在它也会返回false,我做错了什么?

4

4 回答 4

3

改变这一行:

        userexists = (bool)c.ExecuteScalar();

对此:

        userexists = (int32)c.ExecuteScalar() > 0;
于 2013-07-13T11:38:16.217 回答
3

由于您要返回一个数字,因此您应该将其转换为并添加条件以获取bool结果

userexists = (int) c.ExecuteScalar() > 0;
于 2013-07-13T11:38:22.467 回答
0
select CASE WHEN Count(*) > 0 THEN 1 ELSE 0 END as UserExists from.....
于 2013-07-13T11:45:47.333 回答
0

您可以通过以下方式解决您的问题

        userexists = (int)c.ExecuteScalar() > 0.

但是,我也对这种方法持保留意见。您应该检查用户 ID 而不是用户名。多个用户可以拥有相同的用户名,而用户 ID 将是唯一的。

于 2013-07-13T11:51:46.753 回答