Inserir dados do banco de dados em um combo box[RESOLVIDO]

24 respostas
L

.

24 Respostas

P

já debugou? o sql retorna valores?

já pesquisou no forum sobre tal asssunto? tem bastante material sobre isso.

att,

L

então já rodei a aplicação sim e não retorna nenhum valor !! o que está acontecendo será ?!

P

então esse cara:

ta vazio?

att,

L

Então é sim, acho que deve ter algum erro com o código ! porque não está vindo nenhum valor do banco de dados !

M

Retira o “;” do comando e adiciona um degub para ver se está entrando no bloco while. Pode ser um “syso” mesmo.

D

Tenta tirar o try e catch do seu método, e adicionar o clausula throws sqlException e Exception.
Depois tira o statement. E deixe o seu código assim.

Statement stm = conn.createStatement();

Faça o mesmo com o resultset.
No seu select você pode deixar no lugar de “empresa_nome”, simplesmente um “*”. Assim facilita, se houver alguma divergência. Não que vá alterar muito, mas sabe que é melhor previnir do que ficar correndo atrás de erros.
No lugar de:

conn.close();

Você põem:

stm.close;
rs.close;

Há não ser que você queira fechar sua conexão com o banco, vai da sua aplicação. Porém não sei se não interfere na consulta, acho que não.
Dentro do seu método popularCombo, você coloca isto:

dao fat = new dao(); 
        try{
            DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());
           jComboBox1.setModel(defaulComboBox);
        }catch (Exception e){           
        }

Então você chama este método no seu construtor e seja feliz.
E não esqueça de verificar se você tem algum dado cadastrado no seu banco.
Espero ter ajudado.
Abraços

L

coloquei isso que no meu código , rodei a aplicação… mas não esta aparecendo nenhum valor ainda ! o que será que está de errado ??

D

Nesta tabela tem algum dado inserido?
Então posta o seu código novamente, pra ver como ficou.

L

então, o meu código está do jeito que tava antes , só que com as suas alterações ! não está retornando nenhum valor ainda…

alguém tem algum código básico que funcione o combo box, preciso urgentemente!!

obrigado

D

Se você não postar o código, não tem como te ajudar mais.
O jeito é você ir fazendo teste até conseguir achar o seu erro.
Sem testar e mudar o que está errado, não vai aparecer nada mesmo.

L

esta ai o codigo ! não retorna nenhum valor e nenhum erro ao rodar a aplicação

public void popularCombo(){  
  
  
     jComboBox1.removeAllItems();  
  
        dao fat = new dao();  
        ArrayList<String> shad = fat.getDados();  

try{  
     DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());  
    jComboBox1.setModel(defaulComboBox);  
}catch (Exception e){             
}  
           
          
         
//loop que percorrerá todos os dados retornado pelo banco  
     for (int i=0; i<shad.size();i++) {  
             String lista = shad.get(i);  
  
            //comando para adicionar os dados no comboBox  
         jComboBox1.addItem(lista);  
  
  
        }  
    }

public ArrayList<String> getDados()throws sqlException {  
  
         ArrayList<String> dados = new ArrayList<String>();  
  
         try{  
            Statement stm = (Statement) conn.createStatement();  
  
            //resultado do banco   
            ResultSet rs = (ResultSet) stm.executeQuery("Select empresa_nome from empresas;") ;  
            while(rs.next()){  
                dados.add(rs.getString("empresa_nome"));  
  
  
  
            }  
  
        
  
           // conn.close();

           stm.close;  
           rs.close;   
  
         }catch(Exception e){  
             JOptionPane.showMessageDialog(null,"Erro ao selecionar." +e);  
  
         }  
  
         return dados;  
     }
D

Faz o seguinte, tira:

public ArrayList&lt;String&gt; getDados()throws sqlException {    
    
         ArrayList&lt;String&gt; dados = new ArrayList&lt;String&gt;();    
    
         try{    
            Statement stm = (Statement) conn.createStatement();    
    
            //resultado do banco     
            ResultSet rs = (ResultSet) stm.executeQuery("Select empresa_nome from empresas;") ;    
            while(rs.next()){    
                dados.add(rs.getString("empresa_nome"));    
    
    
    
            }    
    
          
    
           // conn.close();  
  
           stm.close;    
           rs.close;     
    
         }catch(Exception e){    
             JOptionPane.showMessageDialog(null,"Erro ao selecionar." +e);    
    
         }    
    
         return dados;    
     }

e põem:

public ArrayList&lt;String&gt; getDados()throws sqlException, Exception {    
    
         ArrayList&lt;String&gt; dados = new ArrayList&lt;String&gt;();
         Statement stm = conn.createStatement();    
    
            //resultado do banco     
            ResultSet rs = stm.executeQuery("Select empresa_nome from empresas;") ;    
            while(rs.next()){    
                dados.add(rs.getString("empresa_nome"));
            }    
           // conn.close();  
  
           stm.close;    
           rs.close;    
         return dados;    
     }

e:

public void popularCombo() {    
    
    
     jComboBox1.removeAllItems();    
    
        dao fat = new dao();    
        ArrayList&lt;String&gt; shad = fat.getDados();    
  
try{    
     DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());    
    jComboBox1.setModel(defaulComboBox);    
}catch (Exception e){               
}    
             
            
           
//loop que percorrerá todos os dados retornado pelo banco    
     for (int i=0; i&lt;shad.size();i++) {    
             String lista = shad.get(i);    
    
            //comando para adicionar os dados no comboBox    
         jComboBox1.addItem(lista);    
    
    
        }    
    }

por:

public void popularCombo() throws SqlException, Exception{
    
        dao fat = new dao();
     DefaultComboBoxModel defaulComboBox = new DefaultComboBoxModel(fat.getDados().toArray());    
    jComboBox1.setModel(defaulComboBox);
    }

Sendo que a sua conexão com o banco está funcionando certinho.
E em vez de copiar e colar, vai digitando o que está escrito, e dando um ‘ctrl+space’, que é para o netbeans, se é que você está usando o netbeans, poder ir fazendo os import’s necessários.

L

blzz , eu vou tentar aqui ! depois eu posto novamente alguma coisa sobre isso !

valeu…

D

Certo.
Só não esqueça de colocar [Resolvido], caso tenha solucionado o seu problema.
Abraços

L

não consegui , coloquei o código igualzinho o que vc escreveu… não dei ctrl+c não, escrevi tudinho e continua não aparecendo nenhum valor ainda!!!

L

não consegui não, o codigo esta igual, escrevi tudinho! não aparece nenhum valor ainda…

D

Você chamou o método no construtor?

L

como assim? eu escrevi do jeito que me passo! esse metodo popularCombo esta dentro da classe!

D

Você fez a sua tela clicando e arrastando os componentes, certo?
Então lá no seu código, vai ter a inicialização da classe:

public class cadastro_Aluno extends javax.swing.JFrame {

e logo abaixo vai ter o construtor da sua classe:

public cadastro_Aluno() throws Exception {//note que o nome deste método é o mesmo da sua classe, porém ele virou um método. Isto é um construtor.

Provavelmente o seu construtor já tem alguns métodos, o mais comum é ter o método:

initComponents();//que é o método que constrói os seus componentes.

Então chame o seu método abaixo deste.

L

acabei de colocar abaixo do initComponents(), dentro do método e o public void popularCombo esta com a linha vermelha de erro! esta dizendo expressao ilegal

D

Para você chamar o seu método, você segura “ctrl+space”, e começa a digitar o nome dele, 'popularCombo, então você verá que irá aparecer o seu método escrito. Dai você seleciona o seu método e dá um enter.
Está chamado o seu método.
Não esquecendo do ‘;’, no fim do comando.

L

blz, vou tentar …

L

consegui…valeu a ajuda!
fica com Deus

D

Ok.
Mas o [resolvido] que você tem que colocar é no primeiro post.
Abraços

Criado 8 de novembro de 2011
Ultima resposta 11 de nov. de 2011
Respostas 24
Participantes 4