2016-08-04 134 views
-1

我想總的記錄「時間」值的回報從我的SQL數據庫我想這個代碼表「課程」,但它不工作:總值記錄從SQL數據庫

SqlCommand cmd = new SqlCommand("Select Courses.hours from Courses inner join Sched on Courses.Id = Sched.SCourses ", con2); 
SqlDataReader rdr = cmd.ExecuteReader(); 
while (rdr.Read()) 
{ 
    SqlCommand cmd2 = new SqlCommand("Select sum(hours) as totalHours from Courses"); 
    Label3.Text = cmd2.ToString(); 
} 
+0

歡迎來到Stack Overflow!你能詳細說明你的代碼「不起作用」嗎?你在期待什麼,究竟發生了什麼?如果您遇到異常/錯誤,請發佈其發生的行和異常/錯誤的詳細信息。請[編輯]這些細節或我們可能無法提供幫助。 – FrankerZ

回答

0

您沒有爲您的sql命令cmd2指定連接。 試試這個。

SqlCommand cmd2 = new SqlCommand("Select sum(hours) as totalHours from Courses",con2); 
Label3.Text = cmd2.ExexcuteScalar().ToString(); 
0

代碼中存在兩個問題:在while (rdr.Read())中循環遍歷結果集的所有行,並在第一個查詢中執行Select sum(hours)...多少行。

取決於需求,你可能想要做的,而不是ifwhile

if (rdr.Read()) 

接下來,cmd2.ToString();不會輸出查詢的結果。您應該使用ExecuteReader在第一種情況下,或者使用的ExecuteScalar

if (rdr.Read()) 
{ 
    SqlCommand cmd2 = new SqlCommand("Select sum(hours) as totalHours from Courses", con2); 
    Label3.Text = cmd2.ExecuteScalar().ToString(); 
} 
+0

所以'cmd2.ToString();'會執行查詢並將結果賦給'Label3.Text',如果您將if(rdr.Read())'放在while中,不是嗎? –

0

你爲什麼要使用單獨的查詢共你的時間。使用group by子句並只運行一次。

SqlCommand cmd = new SqlCommand("Select Courses.id, Sum(Courses.hours) from Courses inner join Sched on Courses.Id = Sched.SCourses group by Course.id") 
SqlDataReader rdr = cmd.ExecuteReader(); 
Label3.Text = cmd.ExecuteScalar().ToString(); 

希望它能幫上忙。