这已被窃听我在过去的几个小时,我似乎无法找到答案..C#SqlDataReader的只返回值> 0
我有以下查询
SELECT A, SUM(B) AS total
FROM table
GROUP BY A
现在B列在表中只能容纳0或1 A是共1页,共2笔或共3
现在,当我使用这个直接在SQL数据库中,我得到一个不错的表格保存
A total
total1 1
total2 0
toatl3 5
这正是我想要它做的。 但是,如果在我的C#程序中使用。如果其中一个总数为0,则根本不显示。 下面是我正在使用的代码,但只有当total1,total2和total3大于0时,它才能正常工作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();
}
我怎样才能让这个它会正确显示表,即使共1页,共2条和共3 0
从而显示:
A total
total1 0
total2 0
toatl3 0
我知道, SQL中的0通常等于null等等。
我怀疑这就是C#假定如果该值为0表示不感兴趣的原因。
我希望我解释得很好,谢谢任何帮助!
=======编辑======
COALESCE或ISNULL不有所作为:(
我想这是在SQL与C#的读者有点不查询一下。
正如你可以在我的例子中看到的SQL丝毫创建一个表正确的行和他们不写为NULL。但C#位似乎它读成空。
我怀疑这将解决这个问题,但你尝试过呼吁total_reader [“总”]的ToString()? – SquidScareMe 2011-04-02 02:50:23
@SquidScareMe'ToString()'已经被自动调用。 – 2011-04-02 03:00:34
什么数据类型是B?这是否有点领域? – Naraen 2011-04-02 03:13:10