c#mysql sum查询到标签
本文关键字:标签 查询 sum c#mysql | 更新日期: 2023-09-27 18:24:55
我正在尝试做一些我觉得在总体方案中很简单的事情,但我显然错过了一些东西。我有一个名为"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();
非常感谢建设性的建议。感谢
如果您只想从查询中返回一个值,那么您应该使用ExecuteScalar。ExecuteReader更适合仅向前读取多个记录,因此它对您的情况来说是过度的
请看这里以获得关于ExecuteScalar、ExecuteReader和ExecuteNonQuery之间的区别?
我会对你的代码做一些修改,因为一方面你没有正确处理你的对象,另一方面你说你在按钮点击方法中有它,我会把它从那里拿出来,并使它成为自己的函数。
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 "";
}
最佳实践是,在返回1行1列数据时使用ExecuteScalar(查询就是这样做的)。因此,请使用Execute标量。
确保要添加的列的名称是purprice,并且是数字类型。还要确保它不包含NULL值。
我认为你的代码还可以,但你错过了:
SqlCeCommand cmd = new SqlCeCommand("select sum(purprice) from localcollection",myconn);
仅此而已,希望它能正常工作
只需在SUM()之后添加AS,如下行所示:
从本地集合中选择sum(purprice)AS purprice
你可以走了。