在asp.net中使用ExecuteScalar函数时出现问题
本文关键字:函数 问题 ExecuteScalar asp net | 更新日期: 2023-09-27 18:25:05
我正试图通过检查后端表中是否有一列设置为"NO"来使用ExecuteScalar
函数。如果其中一列设置为NO,那么我想调用SendEmail
函数,否则我想调用Delete_Record
函数。我的问题是它总是调用Delete_Record
函数,而从不调用SendEmail
函数。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();
}
正如其他人所说,您可以获得多条记录。使用"if(result>=1)"或尝试
"从MyTable中选择1,其中Post_ID=@Post_ID And(第1列="否"或第2列="无"或第3列="没有")"
试试这个。肯定会起作用。
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();
}