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(); }