C# 如果为空,则选择总和-更新";0“;
我得到了这个代码,C# 如果为空,则选择总和-更新";0“;,c#,sql,sql-server,winforms,C#,Sql,Sql Server,Winforms,我得到了这个代码,选择SUM,然后在某处更新这个结果。但问题是,在这些条件下,没有找到SELECT SUM(castka)的结果 我想知道如果没有找到任何结果,如何对DBNull进行异常,而则更新“0”。由于我没有那么长的编程时间,有人能帮我解决这个问题吗 非常感谢您抽出时间 private void btn_zavri_Click(object sender, EventArgs e) { try { spojeni.Close
选择SUM
,然后在某处更新这个结果。但问题是,在这些条件下,没有找到SELECT SUM(castka)
的结果
我想知道如果没有找到任何结果,如何对DBNull进行异常,而则更新“0”
。由于我没有那么长的编程时间,有人能帮我解决这个问题吗
非常感谢您抽出时间
private void btn_zavri_Click(object sender, EventArgs e)
{
try
{
spojeni.Close();
SqlCommand sc2 = new SqlCommand("SELECT SUM(castka) AS sumcastka FROM kliplat WHERE akce='" + zakce.Text + "' AND rocnik='" + rocnik + "'", spojeni);
spojeni.Open();
int vysledek2 = Convert.ToInt32(sc2.ExecuteScalar());
SqlCommand sc3 = new SqlCommand("UPDATE zajezd SET s_prijmy=@s_prijmy WHERE akce='" + zakce.Text + "' AND rocnik='" + rocnik + "'", spojeni);
spojeni.Close();
sc3.Parameters.AddWithValue("@s_prijmy", vysledek2);
spojeni.Open();
sc3.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("" + ex);
}
finally
{
spojeni.Close();
this.Close();
}
}
这就是你想要实现的吗
SELECT ISNULL(SUM(castka), 0) AS sumcastka FROM kliplat
改变这个
int vysledek2 = Convert.ToInt32(sc2.ExecuteScalar());
到
使用ISNULL包装sum函数,当没有记录时返回0:
SELECT ISNULL(SUM(castka), 0) AS sumcastka
对没错,非常感谢您的回答和时间,几分钟后我将接受。这不准确,如果和(castka)
不是空的,而是零的,该怎么办?我们无法知道是否满足的条件。
object test = sc2.ExecuteScalar();
if(test != DBNull.Value && test!=null)
{
//rest of your code
int vysledek2 = Convert.ToInt32(test);
}
SELECT ISNULL(SUM(castka), 0) AS sumcastka