Como armazenar valores pegos do banco em um jcombo?

9 respostas
thyagopacher

Gostaria de saber qual é a sintaxe para preencher o combobox com os dados pegos de uma tabela em um banco de dados.Até sei alguma coisa… mas acho que estou errando,gostaria que se pudessem me dessem algum exemplo pois me viro muito bem com exemplos…

9 Respostas

Vingdel

Basicamente você vai popular seu JComboBox com o que vc obteve no seu ResultSet, não há mistério nisso, basta da uma olhada na documentação referente ao JComboBox.

Faça um Loop (while) e vá adicionando os dados buscados no banco através do SELECT enquanto tiver um próximo dado no ResultSet.

Abraço e boa sorte

thyagopacher

eu estou tentando fazer isso em camadas ,e gostaria de saber o que ficaria em cada camada(tela,regra de negocios, e persistencia) e também tenho o VO(não é uma camada) são as classes com seus objetos…

thyagopacher
Criei um método de atualização de um combobox mas ainda não está certo...,pesquisei bastante e o método em si parece certo,não sei o que estou errando ...,abaixo o método
public void atualiza_combo(){
        Connection con = null;
        Statement s;
        
        try {
            
            String sql = "select * from cargo";

            s = con.createStatement();
            
            ResultSet r = s.executeQuery(sql);


            while(r.next()){
                combo_cargos.addItem(r.getString(2));
            }

        }
        catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Não conseguiu carregar os cargos:\n" + ex);
        }
    }
E onde eu o coloquei:
private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        atualiza_combo();
    }
Segue a listagem dos erros que apareceram:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Tela.JF_Cargo.atualiza_combo(JF_Cargo.java:318)
        at Tela.JF_Cargo.formWindowOpened(JF_Cargo.java:276)
        at Tela.JF_Cargo.access$000(JF_Cargo.java:26)
        at Tela.JF_Cargo$1.windowOpened(JF_Cargo.java:65)
        at java.awt.Window.processWindowEvent(Window.java:1862)
        at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
        at java.awt.Window.processEvent(Window.java:1823)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
SandroSoftwares

tenta fazer assim:

try {

String sql = "select * from cargo";  

    s = con.createStatement();  
      
    ResultSet r = s.executeQuery(sql);  


    while(r != null){  // se for diferente de nulo é porque retornou algo!
            r.next(); //chama o primeiro elemento e assim sucessivamente...

String auxiliar = r.getString(2); // aqui no lugar de 2 coloque o nome da coluna como no banco… “cargo” - entre aspas…

combo_cargos.addItem(auxiliar);  
    }

tenta ai e posta o resultado!

thyagopacher

[code]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Tela.JF_Cargo.atualiza_combo(JF_Cargo.java:321)
at Tela.JF_Cargo.formWindowOpened(JF_Cargo.java:278)
at Tela.JF_Cargo.access$000(JF_Cargo.java:26)
at Tela.JF_Cargo$1.windowOpened(JF_Cargo.java:65)
at java.awt.Window.processWindowEvent(Window.java:1862)
at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
at java.awt.Window.processEvent(Window.java:1823)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)code]

SandroSoftwares

vc observou essa instrução em negrito?

r.getString(2); // aqui no lugar de 2 coloque o nome da coluna como no banco… “cargo” - entre aspas…

thyagopacher
deculpe sem querer acabei esquecendo de colocar como ficou meu método de atualização de combo
public void atualiza_combo(){
 
 
        try {
            Conexao cx = null;
            Connection con = null;
            String sql = "select * from cargo";
            String auxiliar;

            cx.conectar();
            System.out.println("conectou\n");
            Statement s = con.createStatement();
            
            ResultSet r = s.executeQuery(sql);

            if(r == null)
                JOptionPane.showMessageDialog(null, "resultset recebendo valor nulo\n");
            while(r != null){
                r.next();//chama o primeiro elemento e assim sucessivamente
                auxiliar = r.getString("descricao");
                combo_cargos.addItem(r.getString(auxiliar));
            }

            cx.desconectar();
        }
        catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Não conseguiu carregar os cargos:\n" + ex);
        }
    }
}
SandroSoftwares

na linha 21 deixe assim:

combo_cargos.addItem(auxiliar);

thyagopacher

mudei um pouco e ficou com o mesmo erro ainda...

public final void atualiza_combo(){

        try {
            
            Connection con = null;
            String sql = "select * from cargo";
            String auxiliar;

            Statement s = con.createStatement();
            
            ResultSet r = s.executeQuery(sql);

            if(r == null)
                JOptionPane.showMessageDialog(null, "resultset recebendo valor nulo\n");
            while(r != null){//so volta alguma coisa se resultset diferente de null
                r.next();//chama o primeiro elemento e assim sucessivamente
                auxiliar = r.getString("descricao");
                combo_cargos.addItem(auxiliar);
            }

        }
        catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Não conseguiu carregar os cargos:\n" + ex);
        }
    }
Criado 21 de abril de 2011
Ultima resposta 27 de abr. de 2011
Respostas 9
Participantes 3