C#SqlReader问题

时间:2013-09-13 09:39:58

标签: c# .net sql variables

我是第一次在这个论坛发帖。我真的希望能找到一些帮助。 我正在做的是从 SQL 加载... 1000值(示例),我做得很好。

查询例如是:Select Value from DatabaseA.dbo.Values

“价值”==>十进制(10,2)

sqlConnection2.Open();
insertCommand2.ExecuteNonQuery();
SqlDataReader reader2 = insertCommand2.ExecuteReader();
if (reader2.HasRows)
{
  while (reader2.Read())
  {
    decimal Value = reader.GetDecimal(0);

这应该可以正常工作。但我想做的就是在所有人身上做+ 例如,第一个值= 16,第二个= 28,第三个:78

我想制作16 + 28 + 78 ......但是对于所有加载它们的值。 我该怎么办? , 谢谢 。

4 个答案:

答案 0 :(得分:3)

假设您也希望保留原始值,则可以使用List<decimal>并累计总计。

List<decimal> totals = new List<decimal>();

然后在你的while循环中:

totals.Add(Value);

然后您可以通过以下方式返回运行总计:

var runningTotal = totals.Sum();

如果您不想要原始值,可以使用:

 decimal value;
 while (reader2.Read())
 {
    value += reader.GetDecimal(0);
 }

答案 1 :(得分:2)

只需将您的变量置于循环之外并使用+= operator

decimal Value = 0;
sqlConnection2.Open();
insertCommand2.ExecuteNonQuery();
SqlDataReader reader2 = insertCommand2.ExecuteReader();

if (reader2.HasRows)
{
    while (reader2.Read())
    {
       Value += reader.GetDecimal(0);
    }
}

答案 2 :(得分:1)

将sql更改为

Select Sum(Value) from DatabaseA.dbo.Values

然后

decimal Value = (decimal)insertCommand2.ExecuteScalar(); 

答案 3 :(得分:0)

您可以使用SQL SUM函数。看看http://technet.microsoft.com/en-us/library/ms187810.aspx