Criando uma aplicação com acesso a Banco de Dados no NetBeans

O NetBeans não possui ferramentas que permitam criar visualmente componentes, em um programa, para manipular os dados de uma tabela, a exemplo dos existentes em outras ferramentas, em outras Linguagens de programação.

O NetBeans não possui ferramentas que permitam criar visualmente componentes, em um programa, para manipular os dados de uma tabela, a exemplo dos existentes em outras ferramentas, em outras Linguagens de programação.

Para trabalhar com Banco de Dados é preciso fazê-lo via código, que deverá ser inserido dentro do método “actionPerformed” de um JButton.

Cria-se o “Formulário” contendo os componentes visuais para mostrar, e manipular, os dados da tabela do Banco de Dados. Dentre estes componentes estão os botões ou menus, os quais serão os responsáveis por executar os códigos para realizar uma determinada operação, consulta, inserção, alteração ou exclusão em um BD.

Depois de criada a “parte visual”, devem ser implementados os códigos nos botões/menus.

Podemos construir uma aplicação usando o seguinte roteiro:

  1. Importar o pacote java.sql:
    import java.sql.*;
  2. Carregar o driver de acesso ao BD:
    Através da Instalação de uma fonte JDBC/ODBC em plataforma Windows:
    Class.forName(“sun.jdbc.odbc.JdbcObdcDriver”);
    Através do driver específico do banco. Ex para o MySQL:
    Class.forName(“com.mysql.jdbc.Driver”);
  3. Obter uma conexão com o BD: (Ex: para um Banco de Dados Access: IJPlanetas.mdb, através de uma fonte JDBC/ODBC)
    Connection conexão = DriverManager.getConnection(“jdbc:odbc:IJPlanetas”);
  4. Por meio da conexão realizada, devemos obter uma instância de um objeto Statement, PreparedStatement ou CallableStatement, para passar comandos SQL ao BD:
    Statement stmt= conexão.createStatement();
  5. Criar objetos para executar operações no BD
    (execute (String), executeQuery (String), ExecuteUpdate(String), executeBatch()): int reg =stmt.executeUpdate(“delete from planeta where nome=’Maria’”); ResultSet rs = stmt.executeQuery(“select nome from planeta”);
  6. Algumas operações retornam resultados do BD (um objeto Resultset – conjunto de registros), os quais devemos exibir ou processar:
    while( rs.next() ) { //move o curso de registros String Nome=rs.getString(“nome”); // obtém o valor do campo “nome” da tabela System.out.println(Nome); }
  7. Quando não precisar mais dos objetos obtidos, libere-os:
    rs.close(); stmt.close();
  8. Após todas as operações encerre a conexão com BD:
    conexão.close();

Exemplo Completo

Crie uma aplicação para cadastrar a Matricula e os Nomes dos Funcionários de uma Empresa, em um Banco de Dados Access, através de uma fonte de dados JDBC/ODBC:

Figura 1 - Tela SistCadFunc.

A parte visual esta construída, falta o código para salvar os dados.

Figura 2 - Tela de Abertura da Fonte de Dados ODBC.

Figura 3 - Tela de Seleção do Drivers


Figura 4
– Tela de Configuração do Driver.

Figura 5 – Tela de Seleção do Banco Access.

Criado o BD e a Fonte ODBC, volte para a sua aplicação no NetBeans e clique com o botão direito do mouse no JButton (Salvar), selecione Event >> Action >> actionPerformed, para codificar a conexão:

try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//Driver JDBC – Fonte de Dados ODBC //conecta no BD, as aspas vazias representam o Login: usuário e senha. Connection con = DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt = con.createStatement(); //objeto comdo sql int cadMat=Integer.parseInt( jTextField1.getText() ); String cadNome = jTextField2.getText(); //obtém nome digitado stmt.executeUpdate("insert into TabFicha (Matricula,Nome) values ('" + cadMat + "','" + cadNome + "')" ); JOptionPane.showMessageDialog( this, " Dados Salvos! "); con.close(); // fecha conexão com BD } catch( SQLException e){ //trata os erros SQL JOptionPane.showMessageDialog(this, "Erro Cmdo SQL " + e.getMessage() ); } catch( ClassNotFoundException e){ //trata erros de conexão JOptionPane.showMessageDialog( this, " Driver não encontrado " ); }

import java.sql.*; import javax.swing.*; Compile (F9) Execute (Shift+F6).

Realizando operações de Consulta, Alteração e Exclusão em BD:

Figura 6 – Tela SistCadFunc atualizada.

boolean consulta=true; try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt= con.createStatement();//objeto comdo sql int ConsMatricula= Integer.parseInt(jTextField3.getText()); ResultSet RS= stmt.executeQuery ("Select * from TabFicha where Matricula=" + ConsMatricula ); while (RS.next()){ //Exibir os valores retornados na consulta nos jTextField int Mat= RS.getInt("Matricula");//Pega a Matricula jTextField1.setText(String.valueOf(Mat)); //converte Inteiro para String. jTextField2.setText(RS.getString("Nome")); // Pega o Nome consulta=false; JOptionPane.showMessageDialog(this,"Dados Encontrados!"); } if (consulta) JOptionPane.showMessageDialog(this,"Dados Não Encontrados!"); RS.close(); stmt.close(); con.close(); //fecha conexão com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver não encontrado"); }

try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt= con.createStatement();//objeto comdo sql int consMatricula= Integer.parseInt(jTextField3.getText()); int cadMat=Integer.parseInt(jTextField1.getText()); String cadNome=jTextField2.getText(); int registro = stmt.executeUpdate("update TabFicha set Nome='" + cadNome + "', Matricula=" + cadMat + " where Matricula=" + consMatricula); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Alterados!"); else JOptionPane.showMessageDialog(this,"Dados Não Alterados!"); stmt.close(); con.close(); //fecha conexão com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver não encontrado"); } try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:BDCadastro","",""); Statement stmt= con.createStatement();//objeto comdo sql int excMatricula= Integer.parseInt(jTextField3.getText()); int registro=stmt.executeUpdate ("delete from TabFicha where Matricula=" + excMatricula); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Excluidos!"); else JOptionPane.showMessageDialog(this,"Dados não Excluidos!"); stmt.close(); jTextField3.setText(“”); //Limpa a caixa de texto con.close(); //fecha conexão com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver não encontrado"); }

Compile Execute

OBS: Como os comandos de conexão com o Banco de Dados estão se repetido, os mesmos poderiam ser implementados dentro do método construtor ou dentro de um método e serem executados através de uma chamada deste método quando se desejar estabelecer uma conexão com o banco de dados para realizar uma determinada operação em suas tabelas, diminuindo a quantidade de código a ser digitado.

Artigos relacionados