2017-05-26 36 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,你应该再试一次 –