我有这个代码SELECTS SUM
然后UPDATE
这个结果。但问题是no results found for SELECT SUM(castka)
有这些条件的情况。
如果没有找到任何结果,我想知道如何制作Exception for DBNull
而UPDATE "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();
}
}
。因为我不是那么长的编程会不会有人帮我解决这个问题?
非常感谢您的时间。
{{1}}
答案 0 :(得分:1)
这是你想要实现的目标吗?
SELECT ISNULL(SUM(castka), 0) AS sumcastka FROM kliplat
答案 1 :(得分:1)
try
{
spojeni.Close();
SqlCommand sc2 = new SqlCommand("SELECT SUM(castka) AS sumcastka FROM kliplat WHERE akce='" + zakce.Text + "' AND rocnik='" + rocnik + "'", spojeni);
spojeni.Open();
object obj = sc2.ExecuteScalar();
int vysledek2 = obj == null ? 0 : Convert.ToInt32(obj);
if(obj != null){
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();
}
}
//....
答案 2 :(得分:0)
更改此
int vysledek2 = Convert.ToInt32(sc2.ExecuteScalar());
到
object test = sc2.ExecuteScalar();
if(test != DBNull.Value && test!=null)
{
//rest of your code
int vysledek2 = Convert.ToInt32(test);
}
答案 3 :(得分:0)
用ISNULL包装sum函数,当没有记录时返回0:
SELECT ISNULL(SUM(castka), 0) AS sumcastka