2017-05-26 55 views
0

我的代碼有點問題。我想,以填補組合框與數據庫字段:我想用數據庫字段填充組合框

 const string connMysql = "DataSource=localhost; Database=ph; Uid=root; Pwd=;"; 
      myConn = new MySqlConnection(connMysql); 
      string cad = "SELECT answers FROM `questions` WHERE (`test_num` = '1')"; 
      myConn.Close(); 
      myConn.Open(); 
      myCommand = new MySqlCommand(cad, myConn); 
      myReader = myCommand.ExecuteReader();    
      if (myReader.Read()) 
      { 
       CB1.Items.Clear(); 
       CB1.Items.Add(myReader[0].ToString()); 
} 

我用這個和combobox只是保持1場,我想,以填補與「答案」的所有的內容。

+1

您的代碼創建實際上只保持1場的「答案」的所有的內容。 'if(myReader.Read())'應該只讀一次我認爲,並且您正在清除組合框並僅添加第一個值。你可以做的是使用'while(myReader.Read())'(未測試),並在你的內部不斷添加你的值。你會需要一個櫃檯,因爲這個課程。 –

+0

您的查詢是否返回任何行? – Fabiano

+0

如果你想在組合框中的一切,也許不要添加'myReader [0]'只是一次...循環收集/數據綁定它。如何做到這一點是在互聯網上 – EpicKip

回答

0

感謝所有的答案,這是我做的:

 const string connMysql = "DataSource=localhost; Database=ph; Uid=root; Pwd=;"; 
     myConn = new MySqlConnection(connMysql); 
     string cad = "SELECT answers FROM `questions` WHERE (`test_num` = '1');"; 
     myConn.Close(); 
     myConn.Open(); 
     myCommand = new MySqlCommand(cad, myConn); 
     myReader = myCommand.ExecuteReader(); 
     CB1.Items.Clear(); 
     while (myReader.Read()) 
     { 
      CB1.Items.Add(myReader[0].ToString()); 
      } 

combobox充滿

+0

如果你的問題得到了回答,你應該選擇正確的答案 –

0

正如其他人所說,你只是添加一個字段,迭代查詢工作。

const string connMysql = "DataSource=localhost; Database=ph; Uid=root; Pwd=;"; 
     myConn = new MySqlConnection(connMysql); 
     string cad = "SELECT answers FROM `questions` WHERE (`test_num` = '1')"; 
     myConn.Close(); 
     myConn.Open(); 
     myCommand = new MySqlCommand(cad, myConn); 
     myReader = myCommand.ExecuteReader();  
     int i = 0; 
     CB1.Items.Clear(); //Clear the Combo box once before adding values 
     while(myReader.Read()) 
     { 
      CB1.Items.Add(myReader[i].ToString()); 
      i++; 
     } 
+0

您的代碼將繼續清除組合框,只有最後一個字段將被發現。 –

+0

我讀了CB1.Items.Clear,你應該再試一次 –