2015-11-03 212 views
1

我嘗試從SQL Server(2個表:FamilleCompte)將數據獲取到Form_Load()中的2個組合框中。將數據從SQL Server加載到組合框中

但正如你看到的結果,它與第一個組合框工作,但第二個它顯示System.Data.SqlClient.SqlDataReader

enter image description here

這是代碼

private void Tresorerie_Load(object sender, EventArgs e) 
{ 
     conn = new SqlConnection(connstring); 
     conn.Open(); 
     String queryCompte = "select NomCom from Compte"; 
     String queryFamille = "select NomFam from Famille"; 
     commCompte = new SqlCommand(queryCompte, conn); 
     commFamille = new SqlCommand(queryFamille, conn); 

     try 
     { 
      //Compte 
      commCompte.CommandType = CommandType.Text; 
      dreaderCompte = commCompte.ExecuteReader(); 

      while (dreaderCompte.Read()) 
      { 
       queryCompte = dreaderCompte[0].ToString(); 
       TreComBoxCompte.Items.Add(queryCompte); 
      } 
     } 
     catch (Exception) 
     { 
      MessageBox.Show("Problem with load Compte"); 
     } 
     finally 
     { 
      dreaderCompte.Close(); 
     } 

     try 
     { 
      //Famille 
      commFamille.CommandType = CommandType.Text; 
      dreaderFamille = commFamille.ExecuteReader(); 

      while (dreaderFamille.Read()) 
      { 
       queryFamille = dreaderFamille[0].ToString(); 
       TreComBoxFamille.Items.Add(dreaderFamille); 
      } 
     } 
     catch (Exception) 
     { 
      MessageBox.Show("Problem with load Famille"); 
     } 
     finally 
     { 
      dreaderFamille.Close(); 
     } 
     conn.Close(); 
    } 
+1

對於要添加DataReader的第二個組合框。 TreComBoxFamille.Items.Add(dreaderFamille); –

+1

對我來說,這似乎有點奇怪,可以將您的顯示文本和您的值分別放回到兩個單獨的(和看似無關的)查詢中。如果這些值在某種程度上是相關的,那麼您應該對錶進行連接並一次性提取數據(這樣可以節省往返數據庫的時間)。我知道這並不是真正回答所問的問題,但除非我錯過了一些東西,這是你真正應該看的東西。 – user2366842

+0

那麼該怎麼做,因爲我這樣做的時候知道哪裏的問題當DB不能返回數據 – Amin

回答

5

對於您要添加第二個組合框您的數據收集器dreaderFamille

TreComBoxFamille.Items.Add(dreaderFamille); 

,而你應該添加queryFamille

queryFamille = dreaderFamille[0].ToString(); 
TreComBoxFamille.Items.Add(queryFamille); 

如果您注重項目的文本在您的ComboBox你會想這個問題,當你看代碼,你會看到你的猜測是正確的。

+0

thnx,我不知道我怎麼看不到它:( – Amin

+1

不客氣:)如果你注意組合框中的項目文本,你會猜測它,然後你會看到你的猜測是真實的:) –

0

爲第二comboxbox,你正在使用錯誤的對象添加

TreComBoxFamille.Items.Add(queryFamille); 
0

你應該做的是這樣的:

while (dreaderFamille.Read()) 
{ 
    queryFamille = dreaderFamille[0].ToString(); 
    TreComBoxFamille.Items.Add(queryFamille); 
}