Boa noite!, Estou com uma dúvida que é a seguinte, quando eu faço uma consulta no banco ele pode me retornar mais de dois nomes, e só consigo pegar um. A idéia é filtrar os nomes dos médicos pelo tipo de médico(Neurocirurgião, Entre outros) e depois pegar esses nomes e colocar em uma ComboBox.
Aqui está o código porém retorna apenas um nome.
Criei uma função para isso.
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";
}
Depois chamar os Nomes em uma 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;
}}
Voce precisa de um ArrayList para armazenar os nomes.
Lembre também de mudar o tipo de retorno do método para ArrayList de String já que iremos retornar uma lista de nomes.
Quando for pegar os nomes dos médicos dessa lista em outra classe lembre-se de que você terá de fazer outro ArrayList para receber o que está sendo passado por esse método.
public List<Medico> listarMedicosPorTipo(String tipo, Connection con) throws Exception {
List<Medico> medicos = null;
String sql = "SELECT NOME, TIPO FROM medicos WHERE Tipo= ?";
PreparedStatement pStmt = con.prepareStatement(sql);
pStmt.setString(1, tipo);
ResultSet rS = pStmt.executeQuery();
medicos = new ArrayList<>();
while (rS.next()) {
medicos.add(new Medico(rS.getString("NOME"), rS.getString("TIPO")));
}
rS.close();
pStmt.close();
return medicos;
}
Como já falaram, você retorna uma lista de medicos. Outra coisa, deixa para tratar exceções lá onde você for usar o método e não dentro dele, o ideal é você dividir em várias camadas (Conexao/DAO/BO/Excecoes).