我需要计算一列的总和并在total.Text
中显示。我怎样才能做到这一点?此列具有可随时更改的无限数据。我正在使用VS2010。我是C#的新手。
示例:
_____________________
| last_retail_price |
---------------------
| 500 |
| 200 |
| 5.60 |
---------------------
total.Text = 705.6 \\ The sum of column which I need
我的代码:
private void add_click(object sender, EventArgs e)
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\fuda\\Fuda.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter da = new SqlDataAdapter();
DataTable tl = new DataTable();
da.SelectCommand = new SqlCommand("Select last_ret_prc from pur_temp", con);
con.Open();
da.Fill(tl);
object sum_obj;
sum_obj = tl.Compute("sum(last_ret_prc)");
total.Text = sum_obj.ToString();
con.close();
}
答案 0 :(得分:1)
这样的事情:
var con = new SqlConnection(/*your connection string*/);
var cmd = conn.CreateCommand();
cmd.CommandText = @"Select Sum(last_ret_prc) FROM pur_temp GROUP BY last_ret_prc";
string sum_obj = cmd.ExecuteScalar().ToString();
total.Text = sum_obj;
con.Dispose();
现在SQL查询只返回一个值。 last_ret_prc
的总和。
方法ExecuteScaler()
返回第一行第一列的第一个值。
答案 1 :(得分:0)
目前,您的代码永远不会起作用:
我已经清理了代码并在本地测试了它并且工作正常:
SqlConnection con =
new SqlConnection(
@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\fuda\Fuda.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter da = new SqlDataAdapter();
DataTable tl = new DataTable();
da.SelectCommand = new SqlCommand("Select last_retail_price from pur_temp", con);
con.Open();
da.Fill(tl);
object sum_obj = tl.Compute("sum(last_retail_price)", null);
total.Text = sum_obj.ToString();
con.Close();
或者,如果您唯一的愿望是显示总数,那么您可能最好在一个SqlCommand中执行此操作:
con.Open();
var command = new SqlCommand("SELECT SUM(last_retail_price) FROM pur_temp", con);
var result = command.ExecuteScalar();
total.Text = result.ToString();
con.Close();