Trabalhando com JTable e Banco de Dados no Java

O JTable (ou Tabela), serve para exibir dados de uma consulta SQL de um banco de dados MySQL.

Neste exemplo vamos criar um tela de consulta de dados para a seguinte tabela;

Criando e personalizando o JTable

  1. Inicie um no projeto no NetBeans e crie um JFrame.
  2. Acrescente um JTable (Tabela) no JFrame criado.
  3. Clique com o botão direito do mouse sobre o JTable e clique em Conteúdo da Tabela
  4. Clique na aba Colunas.
  5. Exclua a coluna 4 e mantenha as demais.
  6. Edite o título das colunas para ID, PAIS e CONTINENTE
  7. Clique agora na aba Linhas
  8. Exclua as 4 linhas brancas exibidas nesta aba
  9. Clique em Fechar.

Preparando o método

O código a seguir pode ser utilizando dentro de um método e ser chamado dentro de um botão ou durante o carregamento do JFrame.

Adicione o código deste método logo após a linha public class do seu JFrame:

public void PopularJTable(String sql) {
  try
  {
   Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://10.67.48.3/bd_info2_olimpiada_lucas_duarte","aluno","etec@147");
   PreparedStatement banco = (PreparedStatement)con.prepareStatement(sql);
   banco.execute(); // cria o vetor
 
   ResultSet resultado = banco.executeQuery(sql);
 
   DefaultTableModel model =(DefaultTableModel) jTable1.getModel();
   model.setNumRows(0);
 
   while(resultado.next())
   {
       model.addRow(new Object[] 
       { 
          //retorna os dados da tabela do BD, cada campo e um coluna.
          resultado.getString("tb03_id_pais"),
          resultado.getString("tb03_nome"),
          resultado.getString("tb03_continente")
       }); 
  } 
   banco.close();
   con.close();
  }
 catch (SQLException ex)
 {
    System.out.println("o erro foi " +ex);
  }
 }

Chamando o método

Agora, sempre que necessitar deste método basta chamá-lo com o método this. Por exemplo, Adicione o método no evento windowOpened do JFrame, para isso, clique sobre o JFrame, vá na paleta Eventos e localize o evento windowOpened, dê dois cliques sobre o botão mostrado na imagem;

Digite o seguinte código:

this.PopularJTable("SELECT * FROM tb03_pais ORDER BY tb03_id_pais DESC");

O código acima chama o método PopularJTable e passa para ele o sql que ele método tem que executar. Você deverá chamar este método sempre que realizar uma operação de INSERT, UPDATE ou DELETE no seu JFrame para que o JTable sempre fique atualizado após estas operações.

Porque passar o SQL por parâmetro?

O SQL está sendo passado por parâmetro para que possamos programar um busca dinâmica. Uma busca dinâmica é aquela onde o usuário digita parte da string que deseja localizar no banco e imediatamente o JTable responde com o resultado da consulta, sem a necessidade de pressionar qualquer botão para isso.

No entanto, explicarei isso em uma aula separada. Leia como utilizar este mesmo método para criar uma busca dinâmica aqui.

Pegando dados da JTable

Com a JTable já funcionando, crie agora 3 JTextField para receber os valores selecionados na JTable pelo usuário.

No evento mouseClicked do JTable, acrescente o seguinte código

 int linha = jTable1.getSelectedRow(); // retorna a linha selecionada pelo usuario
 jTxtIdPais.setText(jTable1.getValueAt(linha,0).toString()); // retorna o valor da celula linha X 0
 jTxtPais.setText(jTable1.getValueAt(linha,1).toString()); // retorna o valor da celula linha X 1
 jTxtContinente.setText(jTable1.getValueAt(linha,2).toString()); // retorna o valor da celula linha X 2

Perceba pelos comentários que a captura dos valores ocorre pela varredura da matriz model. PAra que a captura da matriz funcione, é necessário saber qual linha o usuário selecionou e o método getSelectedRow retorna isso para nós.

O resultado deste projeto será este: