Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#将SQL值求和到标签_C#_Sql_Database_Ms Access - Fatal编程技术网

C#将SQL值求和到标签

C#将SQL值求和到标签,c#,sql,database,ms-access,C#,Sql,Database,Ms Access,我目前有一个DataGridView,它显示所有项目。我想将价格栏中的所有价格相加,然后在“TotalValueLabel”标签中反映出总价。我的陈述有什么不对 string query = "SELECT SUM (Price) FROM Bill"; OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, DBconn); DataTable source = new DataTable(

我目前有一个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.Rows[0][0].ToString();

DataTable对象包含一个DataRow对象列表,其中包含查询结果中每一行的值

然而,在你的情况下,你可能不需要这个。如果要查找单个值,应使用并调用
ExecuteScalar()
。这将返回结果的第一行的第一个值

还可以尝试对实现的对象(如dbadapter、command、connection)调用
Dispose()


DataTable对于单值检索来说是一种过分的方法,除了不能正确访问值之外,更好的方法是使用execute scalar:

var query = "SELECT SUM (Price) FROM Bill";
using (var cmd = new OleDbCommand(query, DBcon))
{
    TotalValueLabel.Text = cmd.ExecuteScalar().ToString();
}

您可能应该告诉我们您的示例中出现了什么问题。它会崩溃吗?它是否显示任何内容?当表单装入时,它不会在标签中显示任何内容。我通常会写入TotalValueLabel.Text=source.Rows[0][0]。ToString();谢谢你,保罗,真是太棒了!请您解释一下[0][0]行是什么?行[0]表示数据表的第一行,第二个索引访问row columns集合-返回第一列的值。所以第[1][5]行将是第2行的第6列值。谢谢,正如Paul之前所建议的那样。但我有一个问题,如何以货币格式显示结果?然后首先将结果转换为int并使用.TotalValueLabel.Text=source.Rows[0][0].ToString(“C”);似乎不工作。行[0][0]返回一个对象。带格式化参数的ToString可处理数值数据,如int、decimal等。因此,请将source.Rows[0][0]对象转换为int,然后调用ToString(“C”)。您好,感谢您的输入。我可以知道使用datatable和executescalar的区别吗?
var query = "SELECT SUM (Price) FROM Bill";
using (var cmd = new OleDbCommand(query, DBcon))
{
    TotalValueLabel.Text = cmd.ExecuteScalar().ToString();
}