对于SQL计数(*),ExecuteScalar返回false

时间:2013-07-13 11:34:35

标签: c# sql sql-server sql-server-2008-r2

我有以下函数来检查我的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 个答案:

答案 0 :(得分:3)

更改此行:

        userexists = (bool)c.ExecuteScalar();

到此:

        userexists = (int32)c.ExecuteScalar() > 0;

答案 1 :(得分:3)

由于你要取回一个号码,你应该这样做并添加条件以获得bool结果

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

答案 2 :(得分:0)

select CASE WHEN Count(*) > 0 THEN 1 ELSE 0 END as UserExists from.....

答案 3 :(得分:0)

您可以通过

解决问题
        userexists = (int)c.ExecuteScalar() > 0.

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

相关问题