Para listar os dados de uma tabela Access em uma JComboBox no Netbeans é preciso ler todos os dados da tabela e posteriormente inseri-los no respectivo JComboBox através do seu método “addItem”. Esta leitura poderá ser feita através de uma conexão utilizando driver nativo do Access ou através de uma conexão ODBC/JDBC. Neste exemplo será ilustrada a utilização da conexão ODBC/JDBC.

Exemplo

Criar uma aplicação no Netbeans que exibe um formulário para efetuar cadastros de uma agenda, contendo a opção da listagem das siglas dos Estados brasileiros numa JComboBox:

1) Criar uma nova base de dados, no Access, com o nome “BDAgenda”, criar a tabela “TbUF” contendo o campo “UF”. Cadastrar manualmente, no Access, as siglas dos Estados: DF, GO, CE, RS... Feche o Access.

2) Criar a fonte de dados ODBC: abra o Painel de Controle do Windows, selecione “Ferramentas Adminitrativas à Fonte de Dados ODBC à clique no botão “Adicionar”

Administrador de Ferramentas ODBC
Figura 01. Administrador de Ferramentas ODBC.

Na janela que se abre selecione o driver do Access à “Concluir”. Na próxima janela digite o nome para a fonte de dados ODBC, que será referenciado na aplicação Java: “BDAgenda” (para facilitar digite o mesmo nome da base de dados), clique no botão “Selecionar” e navegue até a pasta que contém o local onde a base de dados foi salva. Após seleciona-la, clique no botão “OK”à “OK” à”OK”.

Criar Nova fonte de Dados
Figura 02. Criar Nova fonte de Dados.
Configurar ODBC para Microsoft Access
Figura 03. Configurar ODBC para Microsoft Access
Selecionar Banco de Dados
Figura 04. Selecionar Banco de Dados.

3)Criar, no netbeans, um JFrameForm: Menu Fileà NewFileà Java GUI Forms à Next à digite o nome da classe (CadAgenda) em “Class Name” à Finish.

4)Inserir o JComboBox que irá listar as sigla dos Estados. Por exemplo:

CadAgenda
Figura 05. CadAgenda.

O Netbeans ao criar o JComboBox, automaticamente, cria alguns itens, “lixo”, a serem listados. Neste caso é necessário apagar estes itens, caso contrário os mesmos ficaram aparecendo para o usuário. Para “limpar” o JComboBox, selecione-o e na janela de propriedades clique em “Model” e delete os itens existente, tecle “Delete”, ou clique na caixa “...” e remova o itens clicando no botão “Remove” na janela que aparece.

5) Criar os códigos para que o formulário, quando for exibido, mostre os dados da tabela no JComboBox. Isto deve ser feito dentro do método construtor da Classe: clique na aba “Source”, ou selecione o menu “View”à “Editors” à “Source”, e localize o método construtor da classe:


            public CadAgenda(){
        

E depois do comando “initComponents();”, insira:


            try{ //tratamento de erros

                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//Seleciona o Driver do Banco
        
                    //conecta no BD
        
                    Connection con=DriverManager.getConnection("jdbc:odbc:BDAGENDA","","");
                
        
                    Statement stmt= con.createStatement();//objeto comdo sql
                 
        
                //Executa o comando SQL que retorna todos os campos da tabela desejada
        
                ResultSet RS= stmt.executeQuery("Select *  from TbUF");
        
         
                //popular o JcomboBox que os dados da tabela que foram salvos dentro de RS
        
                while(RS.next()){
        
                    jComboBox1.addItem(RS.getString("UF"));
        
                }
        
                } catch(SQLException e){ //trata os erros
        
                    JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage());
        
                } catch(ClassNotFoundException e){       
        
                    JOptionPane.showMessageDialog(this,"Driver não encontrado");
        
                    }
        

6)Importar os pacotes necessários para trabalhar com banco de dados e para exibir caixas de mensagens. Antes de “public class CadAgenda extends javax.swing.JFrame {“ , digite:


                import java.sql.*;  //pacote para trabalhar com banco de dados.

                import javax.swing.*;  // pacote para trabalha com componentes swing (caixa de mensagem).
            

7)Compile (F9) e Execute (Shift+F6)

Para verificar qual o item selecionado basta utilizar o metodo “getSelectedItem()” do JComboBox e armazena-lo em uma variável auxiliar e posteriormente salva-lo no banco:

a) Abra o banco criado anteriormente, BDAgenda, crie uma nova tabela contendo os seguintes campos:


-          Nome: Tipo Texto

-          Telefone: Tipo Texto

-          UF: tipo texto
    
            

Salve a tabela com o nome “TbAgenda”, se desejar pode criar uma chave primária que pode ser auto-numerada.

b) Volte para o Netbeans, na aplicação CadAgenda, selecione o botão “Inserir”, clique com o botão direito do mouse sobre o mesmo, selecione “Event” à “Action”à “actionPerformed”.

Botão “Inserir”
Figura 06. Botão “Inserir”.

c) No código que aparece, observe que é criado um método para tratar os eventos deste botão, insira os comandos para abrir a conexão com o banco, verificar os dados digitados pelos usuários nos JTextField, criar o comando SQL para salvar os dados do usuário no Banco e Fechar a Conexão. Depois do comando:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {“, digite:


                try{ //tratamento de erros

                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//Seleciona o Driver do Banco
            
                //conecta no BD
            
                Connection con=DriverManager.getConnection("jdbc:odbc:BDAGENDA","","");
            
             
            
                Statement stmt= con.createStatement();//objeto comdo sql
            
             
            
                    //Armazena em variáveis auxiliares os dados digitados pelo usuário
            
                    String nome= jTextField1.getText();
            
                    String telefone= jTextField2.getText();
            
                    String UF= (String) jComboBox1.getSelectedItem();
            
                    //Executa o comando SQL para salvar os dados na tabela desejada
            
                    int result= stmt.executeUpdate("insert into TbAgenda (Nome, Telefone, UF) values('" + nome + "','" + telefone + "','" + UF + "')");
            
             
            
                    //Verifica se executou o comando SQL sem erros
            
                    if (result > 0)
            
                        JOptionPane.showMessageDialog(this,"Dados Salvos com Sucesso!");
            
                        else JOptionPane.showMessageDialog(this,"Erro ao tentar Salvar os Dados!");
            
                     } catch(SQLException e){ //trata os erros
            
                        JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage());
            
                    } catch(ClassNotFoundException e){  
            
                        JOptionPane.showMessageDialog(this,"Driver não encontrado");
            
                }
            

Observação: Não é preciso criar uma nova fonte de dados ODBC, porque ela aponta para o Banco de Dados e não para a Tabela. Como já foi criada uma no início da aplicação então ela vale para todas as tabelas existentes no banco.