c#mysql sum查询到标签

时间:2013-07-24 13:06:58

标签: c# mysql sum label

我正在尝试做一些我觉得在宏伟的计划中很简单的事情,但是我显然遗漏了一些东西。我所拥有的是一个名为“localcollection”的简单数据库。我想要做的是总结名为'purprice'的列的美元金额,并将其设置为标签的文本(label4)。在过去的几天里,我一直在寻找代码的变体,提出了实现这一目标的不同方法。我的大部分挖掘建议使用ExecuteScalar是我想要做的。我一直在摸索的代码如下。

SqlCeConnection myconn = new SqlCeConnection(Properties.Settings.Default.localbotdbConnectionString);
myconn.Open();

{
    string result = "select sum(purprice) from localcollection";
    SqlCeCommand showresult = new SqlCeCommand(result, myconn);

    label4.Text = showresult.ExecuteScalar().ToString();
    myconn.Close();
}

其他人建议使用SqlCeReader。我对他们中的任何一个都是公正的,只要其中一个有效,我显然错过了一些东西(我自己的错误)。读者表达我试图做的工作是:

SqlCeCommand cmd = new SqlCeCommand("select sum(purprice) from localcollection");
SqlCeDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
    label4.Text = reader.GetString(0);
}
myconn.Close();

建设性建议表示赞赏。谢谢

6 个答案:

答案 0 :(得分:1)

如果您只想从查询中返回一个值,那么 ExecuteScalar 就是您应该使用的内容。 ExecuteReader更适合仅向前读取多个记录,因此对您的情况来说太过分了

在这里查看比较What is the difference between ExecuteScalar, ExecuteReader and ExecuteNonQuery?

答案 1 :(得分:0)

最佳做法,当您返回1行和1列数据时(使用您的查询执行),请使用ExecuteScalar。结果,请使用ExecuteScalar。

答案 2 :(得分:0)

确保您要添加的列的名称是purprice,并且它是数字类型。 还要确保它不包含NULL值。

答案 3 :(得分:0)

我会对你的代码进行一些修改,因为有一件事你没有正确处理你的对象,你还说你在按钮点击方法中有它,我会从那里得到它并使它成为自己的功能

private string performSQL() 
{
   string result = "select sum(purprice) from localcollection";
   using (SqlCeConnection myconn = new SqlCeConnection("ConnectionString"))
   using (SqlCeCommand showresult = new SqlCeCommand(result, myconn))
   {
      try
      {
          myconn.Open();
          return showresult.ExecuteScalar().ToString();

      }catch(System.Exception ex)
      {
          MessageBox.Show(ex.ToString());
          // or log exception how ever you prefer
      }finally
      {
          //the finally ensures your connection gets closed
          myconn.Close();
      }
   }
   return "";
}

答案 4 :(得分:0)

我认为您的代码没问题,但您错过了:

  SqlCeCommand cmd = new SqlCeCommand("select sum(purprice) from localcollection",myconn);

就是这样,希望它有效

答案 5 :(得分:0)

只需在SUM()之后添加AS,如下面的行:

  

从localcollection中选择总和(purprice)AS purprice

你很高兴。