如果为NULL则选择SUM - 更新“0”

时间:2013-08-13 09:44:13

标签: c# sql sql-server winforms

我有这个代码SELECTS SUM然后UPDATE这个结果。但问题是no results found for SELECT SUM(castka)有这些条件的情况。

如果没有找到任何结果,我想知道如何制作Exception for DBNullUPDATE "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}}

4 个答案:

答案 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