How do I get more than one value from the database and save more than one returned value in a ComboBox? [closed]

1

I have a question that is the following, when I make an appointment in the bank it can return me more than two names, and I can only get one. The idea is to filter the names of doctors by type of doctor (Neurosurgeon, among others) and then pick up those names and put them in a ComboBox.

Here is the code but returns only a name.

I created a function for this.

    public String tipoMedico(String tipo)
    {
    try{
    Statement comando = cone.createStatement();
    ResultSet rs = comando.executeQuery("SELECT Nome,Tipo FROM 'medicos'                    
    WHERE Tipo='"+tipo+"';");//Se tiver dois médicos do mesmo tipo, era  
    para retornar mais de um nome, quero saber como pegar todos os nomes  
    que retornar.

    while(rs.next()) {

              String Tipo = rs.getString("Tipo");
                String Nome1 = rs.getString("Nome");

                if(tipo.equals(Tipo)){                    

                 return Nome1;
                  }
    }}
    catch(SQLException e)
    {
      JOptionPane.showMessageDialog(null,"Erro na Conexão com o Banco de 
    Dados");
    }
     return "Não encontrado";
    }

Then call the Names in a ComboBox.

   private void cbTipoActionPerformed(java.awt.event.ActionEvent evt) {   
   String nome =  
   dado.tipoMedico(cbTipo.getItemAt(cbTipo.getSelectedIndex()));
   String tipo = cbTipo.getItemAt(cbTipo.getSelectedIndex());
    switch(tipo)
   {
    case "Neurocirurgião": cbDoutor.removeAllItems();
    cbDoutor.addItem(nome);//Aqui eu adiciono o nome retornado do banco   
    na comboBox
      break;
      case "Clinico Geral": cbDoutor.removeAllItems();
       cbDoutor.addItem(nome);
      break;

     }}
    
asked by anonymous 16.11.2016 / 01:46

1 answer

2

Your problem is that you return in the first increment of ResultSet . So I suggest you return a List of String :

public List<String> tipoMedico(String tipo) {
List<String> medicos = new ArrayList<>();

try {
  Statement comando = cone.createStatement();
  ResultSet rs = comando.executeQuery("SELECT Nome,Tipo FROM 'medicos' WHERE Tipo ='" + tipo + "'  ;");

  while (rs.next()) {
    String tipoEncontrado = rs.getString("Tipo");
    String nome = rs.getString("Nome");

    if (tipoEncontrado.equals(tipoEncontrado)) {
      medicos.add(nome);
    }
  }
} catch (SQLException e) {
  JOptionPane.showMessageDialog(null, "Erro na Conexão com o Banco de Dados");
}

return medicos;

}

And add the result to the combo as follows:

private void cbTipoActionPerformed(java.awt.event.ActionEvent evt) {
  List<String> nomes = dado.tipoMedico(cbTipo.getItemAt(cbTipo.getSelectedIndex()));
  String tipo = cbTipo.getItemAt(cbTipo.getSelectedIndex());

  cbDoutor.removeAllItems();

  for (String nome : nomes) {
    cbDoutor.addItem(nome);
  }
}
    
16.11.2016 / 02:00