C# 如果sql查询的输出为空,则将标签值指定为零

C# 如果sql查询的输出为空,则将标签值指定为零,c#,C#,我是c#的新手 我正在使用winform c#。我有一个查询,结果是列值的总和。 总和设置为label.text以显示可见性,默认值为0,即我的代码为零 string interoo = "select sum(charge) from table2 where datepart(mm,given_schedule)= @yourMonthSelected and datepart(yy,given_schedule)= @yourYearSelected"; 问题是,如果没有搜索

我是c#的新手 我正在使用winform c#。我有一个查询,结果是列值的总和。 总和设置为label.text以显示可见性,默认值为0,即我的代码为零

    string interoo = "select sum(charge) from table2 
where datepart(mm,given_schedule)= @yourMonthSelected and 
datepart(yy,given_schedule)= @yourYearSelected";

问题是,如果没有搜索结果,则表示输出为空,然后将overson.text设置为null表示在winform中不可见文本为blanlk我认为它返回dbnull值,但如果未找到搜索结果,如何将其设置为0。如果搜索结果被找到,那么它将是相同的,但如果它是空的,那么我不希望它是空的,它应该是0。这可能吗?

你可以改变很多事情。例如,如果只返回一个项目,则您的查询可以使用强制零,而您不需要执行

string interoo = "SELECT ISNULL(SUM(charge), 0) FROM table2 WHERE datepart(mm,given_schedule)= @yourMonthSelected AND datepart(yy,given_schedule)= @yourYearSelected";

SqlCommand cmdd = new SqlCommand(interoo, conn);
cmdd.Parameters.AddWithValue("yourMonthSelected", comboBox1.Text);
cmdd.Parameters.AddWithValue("yourYearSelected", comboBox2.Text);
SqlDataReader rdrr = cmdd.ExecuteReader();

if (rdrr.Read())
{
    turnover.Text = rdrr[0].ToString();
}

更改您的代码,如

if(rdrr.Read())
{
     turnover.Text = rdrr[0].ToString();
}
else 
{
    turnover.text = "0";
}

…试试这个,让我进一步了解

旁白:您的
AddWithValue
参数名中缺少“@”。rajesh bhai不是。相同的空白输出正常…确保标签的背景色和前颜色不相同…标签可见=真。是的,先生,它是相同的,但由另一个人看到答案,然后您将得到现实中的问题是什么空(总和(费用),0)先生,您的答案有效。但是你能给我解释一下这是什么吗?isnull的意思是它是如何工作的?它是一个sql函数,是的,ISNULL是一个sql方法,用于检查一个值是否为NULL,如果为NULL,则替换为另一个值,在本例中为0。你可以让它返回-1或者其他任何有帮助的东西。这在SQL语句变得更复杂时非常有用。我已经为我的答案添加了链接。谢谢先生的解释,非常感谢,我不知道我的情况。你能解释为什么排序后出现空值吗?没有记录,然后添加该记录将导致0非空,因为任何添加都将导致最后一个0,它将永远不会返回空值,所以在我的情况下,它为什么会返回空值?如果没有与WHERE语句匹配的记录,则结果将为空。这是SUM的定义行为。如果您没有记录,那么如果总和返回0(零),这将产生误导,因为这表明存在记录。是的,先生,我得到了您所说的,先生,在我的案例中,替换while to If得到的是相同的值。在我的案例中,If和while之间是否有任何差异?