检查c#中sql命令的返回

时间:2012-03-15 08:06:16

标签: c# visual-studio-2010

我想检查我的查询是否返回任何值,并相应地写下剩余的逻辑。

SqlCommand myCommand = new SqlCommand("Select * from phc.userbase where [user]='@Username' and [password]='@password'", myConnection);

我想知道这个命令是否返回null。我试过了

myReader = myCommand.ExecuteReader();
bool rd = myReader.Read();

if rd==false

但我无法让它发挥作用。有什么想法吗?

以下是我的参数:

SqlParameter myParam = new SqlParameter("@Username", SqlDbType.VarChar, 25);
myParam.Value = usr;

SqlParameter myParam2 = new SqlParameter("@password", SqlDbType.VarChar, 25);
myParam2.Value = pass;

2 个答案:

答案 0 :(得分:2)

使用SqlDataReader.HasRows()

if (myReader.HasRows())
{
    // Do something
}

答案 1 :(得分:2)

这取决于null这里的含义;你的意思是“没有行”?如果是这样的话:

using(var myReader = myCommand.ExecuteReader()) {
    if(myReader.Read()) {
      // at least 1 row; can now check columns
    } else {
      // no rows
    }
}

说实话,你可以将其更改为SELECT 1 ...并使用ExecuteScalar - 更不用说了。

在这种情况下,仅SELECT 1 ...rest of query...并使用:

可能更容易
object value = myCommand.ExecuteScalar();
if(value != null) { ... got a row ...}