我目前有一个显示所有项目的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();
您的数据源是一个数据表,因此“ source.ToString()”不会为您提供结果,
source.ToString()
尝试“ source.Rows[0][0].ToString();”。
source.Rows[0][0].ToString();
DataTable对象包含DataRow对象的列表,这些对象保存查询结果每一行的值。
但是,根据您的情况,您可能不需要此。如果要查找单个值,则应使用IDbCommand并调用ExecuteScalar()。这将返回 第一个值 的的 第一行 的结果。
ExecuteScalar()
另外,请尝试调用Dispose()实现IDisposable的对象(例如dbadapter,命令,连接)。
Dispose()
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); }