這已被竊聽我在過去的幾個小時,我似乎無法找到答案..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