C# 在asp.net中使用ExecuteScalar函数时出现问题

C# 在asp.net中使用ExecuteScalar函数时出现问题,c#,asp.net,C#,Asp.net,我试图使用ExecuteScalar函数,检查后端表中是否有一列设置为“否”。如果其中一列设置为“否”,则我要调用sendmail函数,否则我要调用Delete\u Record函数。我的问题是它总是调用Delete\u Record函数,而从不调用sendmail函数。Post_ID的数据类型是varchar,我不知道这是否与;我只是不知道发生了什么事。有人能帮忙吗? 这是我的密码: SqlCommand cmd = new SqlCommand("SELECT count(*) from M

我试图使用
ExecuteScalar
函数,检查后端表中是否有一列设置为“否”。如果其中一列设置为“否”,则我要调用
sendmail
函数,否则我要调用
Delete\u Record
函数。我的问题是它总是调用
Delete\u Record
函数,而从不调用
sendmail
函数。
Post_ID
的数据类型是varchar,我不知道这是否与;我只是不知道发生了什么事。有人能帮忙吗? 这是我的密码:

SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTable WHERE Post_ID =@Post_ID And (Column1='No' OR Column2='No' OR Column3='No')", con);
    cmd.Parameters.Add("@Post_ID", SqlDbType.VarChar).Value = Post_ID;
    cmd.Connection = con;
    con.Open();
    Int32 result = (int)cmd.ExecuteScalar();

    if (result == 1)
    {
        SendEmail();
    }
      else
     {
       Delete_Record();
     }

因为它可能不止一个,所以您应该将您的情况更改为

    if (result >= 1)
    {
        SendEmail();
    }
      else
     {
       Delete_Record();
     }

正如其他人所说,你可以找回不止一张唱片。使用“如果(结果>=1)”或尝试


“从MyTable中选择1,其中Post\u ID=@Post\u ID和(Column1='No'或Column2='No'或Column3='No')”

试试这个。肯定会有用的

SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTable WHERE Post_ID =@Post_ID And (Column1='No' OR Column2='No' OR Column3='No')", con);
    cmd.Parameters.Add("@Post_ID", SqlDbType.VarChar).Value = Post_ID;
    cmd.Connection = con;
    con.Open();
    SqlDataReader rd=cmd.ExecuteReader()

    if (rd.Read())
    {
        SendEmail();
    }
      else
     {
       Delete_Record();
     }

它能不止一个吗?是否可以检查
结果
值?如果结果为0(没有与条件匹配的记录)或大于1(超过1条记录匹配),该怎么办?您是否希望结果正好是
1
,可能有更多的记录满足您的条件,请设置断点以查看返回的内容,或者只是将您的条件更改为
(result>=1)
我要做的就是检查这些列中是否有“NO”一词如果其中一列没有,那么我想发送一封电子邮件,或者调用另一个函数。当您直接在DB中运行该查询时会发生什么情况(我猜是SSMS/SQL Server?)