Sunteți pe pagina 1din 8

Criando uma aplicao com acesso a Banco de Dados no NetBeans

O NetBeans no 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 programao.
Introduo
O NetBeans no 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 programao.
Para trabalhar com Banco de Dados preciso faz-lo via cdigo, que dever ser inserido dentro do
mtodo actionPerformed de um JButton.
Cria-se o Formulrio contendo os componentes visuais para mostrar, e manipular, os dados da tabela do
Banco de Dados. Dentre estes componentes esto os botes ou menus, os quais sero os responsveis
por executar os cdigos para realizar uma determinada operao, consulta, insero, alterao ou
excluso em um BD.
Depois de criada a parte visual, devem ser implementados os cdigos nos botes/menus.
Podemos construir uma aplicao usando o seguinte roteiro:
1) Importar o pacote java.sql:
import java.sql.*;
2) Carregar o driver de acesso ao BD:
Atravs da Instalao de uma fonte JDBC/ODBC em plataforma Windows:
Class.forName(sun.jdbc.odbc.JdbcObdcDriver);
Atravs do driver especfico do banco. Ex para o MySQL:
Class.forName(com.mysql.jdbc.Driver);
3) Obter uma conexo com o BD: (Ex: para um Banco de Dados Access: IJPlanetas.mdb, atravs de uma
fonte JDBC/ODBC)
Connection conexo = DriverManager.getConnection(jdbc:odbc:IJPlanetas);
4) Por meio da conexo realizada, devemos obter uma instncia de um objeto Statement,
PreparedStatement ou CallableStatement, para passar comandos SQL ao BD:
Statement stmt= conexo.createStatement();
5) Criar objetos para executar operaes 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 operaes 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); // obtm o valor do campo nome da tabela
System.out.println(Nome);
}
7) Quando no precisar mais dos objetos obtidos, libere-os:
rs.close();
stmt.close();
8) Aps todas as operaes encerre a conexo com BD:
conexo.close();
Exemplo Completo
Crie uma aplicao para cadastrar a Matricula e os Nomes dos Funcionrios de uma Empresa, em um
Banco de Dados Access, atravs de uma fonte de dados JDBC/ODBC:
Criar um novo Project: clique no menu File >> New Project >> selecione General >> Java
Applicatin >> Next >> na prxima janela digite o no do Projeto: ExemploConexaoBD, clique em Finish.
Criar um JForm contendo os componentes visuais: Clique no Menu File >> New File >> Selecione
Java GUI Forms >> JFrame Forms >> clique no boto Next. Na janela que se abre, no campo Name,
digite SistCadFunc e clique no Boto Finish.
Insira os seguintes componentes: dois JLabel (Nome e Matricula), dois JTextField e um JButton
(Salvar).

Figura 1 - Tela SistCadFunc.
A parte visual esta construda, falta o cdigo para salvar os dados.
Abra o Access e crie um BD (BDCadastro) com uma Tabela (TabFicha) com os campos: Matricula
(Tipo Numrico/Chave Primria) e Nome Tipo Texto.
Criar a fonte de dados JDBC/ODBC: No windows, abra o Painel de Controle >> Ferramentas
Administrativas >> Fontes de Dados ODBC >> clique no Boto Add >> Selecione o Driver p/ BD Access
>> clique no boto Concluir >> no campo Nome da Fonte de Dados digite BDCadastro >> clique no
boto Selecionar >> Procure o BD criado (BDCadastro) e clique no Boto OK >> OK >> OK.

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

Figura 3 - Tela de Seleo do Driver.

Figura 4 Tela de Configurao do Driver.

Figura 5 Tela de Seleo do Banco Access.
Criado o BD e a Fonte ODBC, volte para a sua aplicao no NetBeans e clique com o boto direito do
mouse no JButton (Salvar), selecione Event >> Action >> actionPerformed, para codificar a conexo:
Depois de private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {, digite:
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: usurio 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(); //obtm nome digitado
stmt.executeUpdate("insert into TabFicha (Matricula,Nome) values ('" + cadMat +
"','" + cadNome + "')" );
JOptionPane.showMessageDialog( this, " Dados Salvos! ");
con.close(); // fecha conexo com BD
} catch( SQLException e){ //trata os erros SQL
JOptionPane.showMessageDialog(this, "Erro Cmdo SQL " + e.getMessage() );
} catch( ClassNotFoundException e){ //trata erros de conexo
JOptionPane.showMessageDialog( this, " Driver no encontrado " );
}
Importar os pacotes sql e swing do Java - antes de: public class SistCadFunc... digite:
import java.sql.*;
import javax.swing.*;
Compile (F9) Execute (Shift+F6).
Realizando operaes de Consulta, Alterao e Excluso em BD:
Insira trs Botes para executar as operaes restantes no Banco de Dados (Consulta, Alterao
e Excluso, atravs da Matricula), um JLabel, para exibir o Texto Matricula para Consulta/Excluso,
supondo que estas operaes sero feitas atravs do campo Matricula, e insira tambm um JTextField
para usurio poder digitar a Matricula, ou crie um novo Form contendo os JLabel, JTextField , e JButton,
sendo que o mesmo dever ser chamado por outro Form atravs de um JMenurBar.
Supondo que foram inseridos os novos componentes da seguinte forma:

Figura 6 Tela SistCadFunc atualizada.
Basta clicar com o boto direito do mouse sobre o boto desejado e inserir o respectivo cdigo
para a respectiva operao:
Operao de Consulta (Atravs da Matricula digitada pelo usurio no jTextField3)
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 No Encontrados!");
RS.close();
stmt.close();
con.close(); //fecha conexo com BD
} catch(SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage());
} catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(this,"Driver no encontrado");
}

Alterar: (Realiza alterao dos dados atravs da Matricula informada no jTextField3)
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 No Alterados!");
stmt.close();
con.close(); //fecha conexo com BD
} catch(SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage());
} catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(this,"Driver no encontrado");
}
Excluir: (Realiza excluso do registro atravs da Matricula informada no jTextField3)
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 no Excluidos!");
stmt.close();
jTextField3.setText(); //Limpa a caixa de texto
con.close(); //fecha conexo com BD
} catch(SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage());
} catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(this,"Driver no encontrado");
}
Compile Execute
OBS: Como os comandos de conexo com o Banco de Dados esto se repetido, os mesmos poderiam ser
implementados dentro do mtodo construtor ou dentro de um mtodo e serem executados atravs de
uma chamada deste mtodo quando se desejar estabelecer uma conexo com o banco de dados para
realizar uma determinada operao em suas tabelas, diminuindo a quantidade de cdigo a ser digitado.
Jos Valney Melo Barbalho (jvmb@ibest.com.br), MBA em GSI.

Leia mais em: Criando uma aplicao com acesso a Banco de Dados no
NetBeans http://www.devmedia.com.br/criando-uma-aplicacao-com-acesso-a-banco-de-dados-no-
netbeans/5122#ixzz2yt74tSjy

S-ar putea să vă placă și