【问题标题】:sql diplay sum resultsql显示总和结果
【发布时间】:2015-01-15 11:23:46
【问题描述】:

如何将查询的总和结果显示到以下网格视图中:

string raf5 = string.Format("select SUM(orderDetails.unitPrice) from orderDetails INNER JOIN Orderz ON orderDetails.orderId=Orderz.Id AND Orderz.customerId={0} ", k);
SqlCommand comm5 = new SqlCommand(raf5, c);
SqlDataReader r55 = comm17.ExecuteReader();
DataTable ts = new DataTable();
ts.Columns.Add("Total Sum", typeof(string));
while (r55.Read())
{
    ts.Rows.Add(r55["unitPrice"].ToString());
}
c.Close();
GridView3.DataSource = ts;
GridView3.DataBind();

【问题讨论】:

  • 我猜它会在ts.Rows.Add(r55["unitPrice"].ToString());@ 线上抛出异常
  • 你为什么用GridView来显示sum
  • @J.Steen 因为ts.Rows.Add?
  • 还有神秘的 comm5 和 comm17 - 这完全正确吗?
  • 首先尝试在代码中添加断点,看看代码或逻辑有什么问题。这是找出代码中问题的最好方法。

标签: c# sql gridview


【解决方案1】:

您面临的问题是缺少列名。 您需要为总和指定一个列名,如下所示:

string raf5 = string.Format("select SUM(orderDetails.unitPrice) as unitPrice from orderDetails INNER JOIN Orderz ON orderDetails.orderId=Orderz.Id AND Orderz.customerId={0} ", k);

或者,您可以在数据阅读器中按索引获取列:

ts.Rows.Add(r55[0].ToString());

此外,您返回的是单个值,因此您最好使用(decimal)com17.ExecuteScalar()

【讨论】:

  • 我按照你告诉我的那样重新编辑了我的代码,但网格视图显示的是价格而不是总价,即总和。
  • @ToOt,试试调试方法。首先在 sql 编辑器中执行查询。如果查询返回所需的输出,请尝试查看绑定到 gridview 的表中的内容。
猜你喜欢
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
相关资源
最近更新 更多