C#SqlDataReader仅返回值>;0

C#SqlDataReader仅返回值>;0,c#,sqldatareader,C#,Sqldatareader,在过去的几个小时里,这一直困扰着我,我似乎找不到答案 我有以下疑问 SELECT A, SUM(B) AS total FROM table GROUP BY A 现在表中的B列只能容纳0或1。 A是total1、total2或total3 现在,当我在SQL数据库中直接使用它时,我得到了一个很好的表 A total total1 1 total2 0 toatl3 5 这正是我想要它做的。 但是如果在我的c#程序中使用。如

在过去的几个小时里,这一直困扰着我,我似乎找不到答案

我有以下疑问

SELECT        A, SUM(B) AS total
FROM          table
GROUP BY      A
现在表中的B列只能容纳0或1。 A是total1、total2或total3

现在,当我在SQL数据库中直接使用它时,我得到了一个很好的表

A        total
total1   1
total2   0
toatl3   5
这正是我想要它做的。 但是如果在我的c#程序中使用。如果其中一个总数为0,则根本不显示。。 下面是我正在使用的代码,但只有当total1、total2和total3大于0时,它才能正常工作 所以上面的表格只显示total1和total3

string total = "A        total";       
SqlConnection conn = new SqlConnection("connection string goes here I know");
try
{
    conn.Open();
    SqlCommand total = new SqlCommand(
        "SELECT A, SUM(B) AS total FROM table GROUP BY A", conn);

    SqlDataReader total_reader = total.ExecuteReader();
    while (total_reader.Read())
    {
        total += total_reader["A"].ToString() + "  " + total_reader["total"] + "\n";
    }
}
catch (Exception err)
{
    serverstats += err.ToString();
}
finally
{
    conn.Close();
}
如何使其正确显示表格,即使total1、total2和total3为0

从而显示:

A        total
total1   0
total2   0
toatl3   0
我知道SQL中的0通常等于null等等

我怀疑这就是C#假设值为0时不感兴趣的原因

我希望我解释得足够正确,谢谢你的帮助

=======编辑======

COALESCE或ISNULL没有区别:(

我认为这与C#reader位有关,而不是SQL查询位


正如您在我的示例中所看到的,SQL位确实创建了一个具有正确行的表,并且没有将它们写入NULL。但是C位似乎将其读取为NULL。

如果列B可以有NULL,请尝试

SELECT        A, COALESCE(SUM(B),0) AS total
FROM          table
GROUP BY      A

您使用的是哪个sql数据库?sql server还是mysql

或者尝试编辑该行:

total+=total\u reader[“A”]。ToString()+“”+total\u reader[“total”]+“\n”;

total+=total\u reader[“A”].ToString()+“”+int.Parse(total\u reader[“total”].ToString())+“\n”;

好的,结果是我在哪里(B=1)

我忘了从我的SQL查询中删除这个


感谢您的帮助:)

我怀疑这会解决问题,但您是否尝试在total_reader[“total”]上调用ToString()?@squidscare
ToString()
已被自动调用。B的数据类型是什么?这是一个位域吗?请不要捕捉系统。例外情况不应该求和(合并(b,0))?谢谢,但我已经尝试过了。以及ISNULL。。我的猜测是C#SqlDataReader位将0读取为空路径