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”
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”.
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:
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”.
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.