2012-06-14 48 views
1

在C#上處理項目需要獲取在site_id 8上工作的所有worker的emp_id並在窗體上顯示它。我所做的是將數據庫中的值存儲到C#變量

SqlCommand cmd3 = new SqlCommand("Select emp_id from employee_attendance where site_id=8",conn); 
SqlDataReader reader = cmd3.ExecuteReader(); 
while(reader.Read()) 
{ 
int emp_id =Convert.ToString(reader[0])); 
label7.Text = Convert.ToString(emp_id); 
} 

它顯示然而,我知道有2名員工符合查詢結果只有一個

+1

'int emp_id = Convert.ToString(reader [0]));'沒有多大意義。 – Magnus

+3

什麼讓更少的意義是所有的答案保持在 –

回答

2

據顯示,因爲你總是覆蓋標籤值只有一個ID:

label7.Text = Convert.ToString(emp_id); 

您需要連接它:

SqlCommand cmd3 = new SqlCommand("Select emp_id from employee_attendance where site_id=8",conn); 
SqlDataReader reader = cmd3.ExecuteReader(); 
StringBuilder sb = new StringBuilder(); 

while(reader.Read()) 
{ 
    int emp_id =Convert.ToString(reader[0])); 
    sb.Append(Convert.ToString(emp_id) + ", "); 
} 

label7.Text = sb.ToString(); 
4

你會始終顯示拉斯t,因爲每次都會覆蓋標籤。你可以這樣做:

StringBuilder builder = new StringBuilder(); 
while(reader.Read()) 
{ 
    builder.Append(reader[0]); 
    builder.Append(" "); 
} 
label7.Text = builder.ToString(); 

,將創造一個長字符串的所有附加在對方(和尾部空間)的ID。如果您需要刪除尾隨的空間,你也可以只修剪得到的字符串,以及:

builder.Remove(builder.Length-1, 1); 
label7.Text = builder.ToString(); 
+0

很好的答案!使用stringbuilder更好。 – Tom

+0

爲什麼要保存到int? int emp_id = Convert.ToString(reader [0]));應該是字符串emp_id = reader [0] .ToString() – Tom

+0

這就是爲什麼downvote(我upvoted雖然):) – Tom

2

這是因爲你的下一個結果覆蓋以前的。您可以使用像一個StringBuilder類來連接emp_id

var cmd3 = new SqlCommand(
    "Select emp_id from employee_attendance where site_id=8",conn); 
var reader = cmd3.ExecuteReader(); 
var sb = new StringBuilder(); 
while(reader.Read()) 
{ 
    int emp_id =Convert.ToString(reader[0])); 
    sb.Append(emp_id + ", "); 
} 
label7.Text = sb.ToString(); 
1

該代碼將覆蓋這兩個ID和label7文本。

while(reader.Read()) 
{ 
    int emp_id =Convert.ToString(reader[0])); 
    label7.Text = Convert.ToString(emp_id); 
} 

要同時顯示這兩個值,請將值附加到一個或另一個,如下所示。

label7.Text = ""; 
while(reader.Read()) 
{ 
    label7.Text += reader[0] += " "; 
} 
1

您將在循環的每次迭代中替換label7.Text中的值,因此它只會顯示最後一項。如果符合您的需要,您可以將字符串連接在一起作爲循環的一部分,或者找到用於表示它的另一種方式,而不是標籤文本。

相關問題