C#SQL SUM值到标签

我目前有一个显示所有项目的DataGridView。 我想在价格列中汇总所有价格,然后在标签“TotalValueLabel”中反映总价。 我的陈述有什么问题?

string query = "SELECT SUM (Price) FROM Bill"; OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, DBconn); DataTable source = new DataTable(); dAdapter.Fill(source); TotalValueLabel.Text = source.ToString(); 

你的来源是一个DataTable,所以“ source.ToString() ”不会给你你的结果,

试试“ source.Rows[0][0].ToString(); ”。

DataTable对象包含DataRow对象列表,这些对象包含查询结果的每一行的值。

在你的情况下,你可能不需要这个。 如果要查找单个值,则应使用IDbCommand并调用ExecuteScalar() 。 这将返回结果第一行第一个值

还尝试在实现IDisposable的对象上调用Dispose() (如dbadapter,command,connection)。

 string query = "SELECT SUM (Price) FROM Bill"; using (System.Data.IDbCommand command = new System.Data.OleDb.OleDbCommand(query, DBconn)) { object result = command.ExecuteScalar(); TotalValueLabel.Text = Convert.ToString(result); } 

DataTable对于单值检索来说是过度的,除了你甚至没有正确访问值之外,更好的方法是使用execute scalar:

 var query = "SELECT SUM (Price) FROM Bill"; using (var cmd = new OleDbCommand(query, DBcon)) { TotalValueLabel.Text = cmd.ExecuteScalar().ToString(); }