Você está na página 1de 26

Conexo da aplicao Java com o banco de dados

Alberto Willian Mascarenhas

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


CRIANDO UM BANCO DE DADOS E DEFININDO A CONEXO:NO ACCESS:
Abra o Access, e crie um banco de dados em branco e salve-o com o nome estoque crie uma pasta com o nome bancoDados, dentro da pasta Estoque (pacote Java que estamos trabalhando localize a pasta NetBeansProjects

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Em seguida, crie a tabela contendo os campos relacionados ao formulrio Sistema de Cadastro de Clientes. (Sugesto: crie no Modo Design). Salve a tabela com o nome cadastro. campos: cdigo - autonumerao chave-primria, empresa 40, endereo 50, cidade 20, uf 2.
ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Inserir alguns registros completos na tabela criada (pelo menos 5 registros completos). Salve a tabela e Feche o Access.

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Diferentemente de outros banco de dados (PostgreSql, SQl, MySql, Firebird, Oracle e DB4Object), com o Access no precisaremos instalar o driver

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Abra o Painel de Controle Ferramentas Administrativas Fontes de Dados (ODBC) Clique em Adicionar Selecione Microsoft Access Driver (*.mdb) Nome da fonte de dados: estoque Descrio: Sistema de Cadastro de Clientes(ou outro que vc considerar) Em Selecionar, localize a pasta criada dentro do Projeto do NetBeans e escolha o banco de dados criado (estoque.mdb). Observe que o banco de dados estoque foi inserido com sucesso na janela Fonte de dados de usurio.

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Agora vamos criar um arquivo que far a conexo com o banco de dados:

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Boto direito sobre o projeto Estoque Novo Arquivo Java vazio (Java empty File) nome da classe: conexao e em Pacote: utilitarios Finalizar. Digite o seguinte cdigo:

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


package utilitarios; import java.sql.*; //bibliotecas que possibilitam efetuar conexo com banco de dados e //executar comandos SQL l dentro import javax.swing.*; public class conexao // { final private String driver = sun.jdbc.odbc.JdbcOdbcDriver; //foi criada a varivel driver do tipo String privada e constante (final) que no //poder ser alterada, que armazenar o driver final private String url = jdbc:odbc:estoque; //a varivel url (igual a varivel driver) estar armazenando a fonte ou origem // de dados

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


private Connection conexao; //o objeto criado conexao do tipo Connection, responsvel por efetuar //a conexo propriamente dita com o banco de dados e privado //s poder ser usada dentro dessa classe public Statement statement; //o objeto criado statement do tipo Statement que o responsvel por //abrir caminho at o local do banco de dados e pblica (todas as classes //podem acess-la public ResultSet resultset; //o objeto criado resultset do tipo Resultset que o responsvel por //armazenar os resultados dos comandos SQL (se tivermos cinco clientes // ficaro armazenados neste resultset) }

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Agora precisamos criar um mtodo que ir efetuar a conexo com o banco de dados. Ele precisar ser pblico, pois ter que ser acessado de outras classes e tambm precisamos implementar no cdigo de modo que, ao tentar efetuar uma conexo, ele retorne se conseguiu ou no efetuar a conexo com o banco de dados.

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


TRATAMENTO DE ERROS (EXCEES): Criar um mtodo para conexo com o banco de dados dentro da Classe Conexao. O Mtodo ter que ser pblico, pois ser acessado de outras classes (Fornecedores, Cidades, etc). O tipo de dados ser booleano (true or false), pois quando se efetuar uma conexo dever ser repassado ao usurio se conseguiu ou se no conseguiu conectar com o banco de dados. (Incluir o seguinte cdigo: final private String usuario = ; e final private String senha = ; )

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


TRATAMENTO DE ERROS (EXCEES): Importante: Em Java, o tratamento de erros essencial, pois s vezes o cdigo no funciona. Isso tambm por conta da segurana que a linguagem Java exige. Assim, todo cdigo que apresenta a possibilidade de erros ou falhas deve ser tratado. Nesse exemplo, usou-se a estrutura try... catch.

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


TRATAMENTO DE ERROS (EXCEES): O cdigo que pode gerar uma exceo ou erro colocando dentro do bloco try. Se o erro/exceo ocorrer, o bloco catch entra em ao para fazer o tratamento do erro. Ex:
try{

} catch(Tipo_Exceo nome){ // tratamento do erro }

// cdigo que pode provocar erros

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


public boolean conecta() {
boolean result = true; //criamos uma varivel de nome result do tipo booleano(s recebe false/true), // que foi inicializada como verdadeira (true) try //vai tentar efetuar alguma coisa e se no der certo, ele vai para o tratamento //de erro (catch - ) { Class.forName(driver); //classe com o mtodo forName vai tentar carregar o driver, conforme // digitado na primeira linha do cdigo conexao = DriverManager.getConnection(url, usuario, senha); //Se for carregado o driver correto, passa-se para a conexo. O objeto //conexao, do tipo Connection(2. linha), vai receber um mtodo //getConnection, da classe DriverManager, //Assim, vai ser passada por parmetro a fonte de dados de jdbc:odbc:estoque //para a varivel url, assim como usurio e senha JOptionPane.showMessageDialog(null, conectou); //se no ocorrer nenhum problema, vai retornar a mensagem conectou

}
ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


catch(ClassNotFoundException Driver) { //tratamento de erro no caso de no conseguir carregar o driver, da seguinte linha: // Class.forName(driver); //a varivel criada Driver acima recebe o erro JOptionPane.showMessageDialog(null,Driver no localizado: +Driver); result = false; //ser mostrada uma janela ao usurio com a mensagem acima + o erro //e a varivel result receber false e a aplicao, nesse caso, daria erro }

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

catch(SQLException Fonte) { //caso o programa passe pelo carregamento do driver e d erro na segunda linha: // conexao = DriverManager.getConnection(url, usuario, senha); //tratamento de erro no caso de no se conectar a fonte de dados, //a varivel criada Fonte recebe o erro

Conexo da aplicao Java com o banco de dados

JOptionPane.showMessageDialog(null,Deu erro na conexo com a fonte de dados: +Fonte); result = false; //ser mostrada uma janela ao usurio com a mensagem acima + o erro //e a varivel result receber false e a aplicao, nesse caso, daria erro } return result; //a classe que chamou o mtodo conecta, que contm a varivel result //tendo retornado true, dar sequncia aplicao, // tendo retornado false, ele vai para a aplicao. }
ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


DESCONECTAR COM O BANCO DE DADOS: J vimos como criar a classe para efetuar a conexo com o banco de dados. Como criar um mtodo para a conexo propriamente dita. Agora vamos criar um mtodo para desconectar com o banco de dados. No momento em que fechamos um formulrio, queremos que ele feche tambm aquela conexo para que ela no fique aberta.

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


No mtodo conecta(), usou-se o public boolean porque queramos um retorno (return result;), para dar seguimento aplicao No mtodo desconecta(), no ser preciso retorno nenhum e fecha o banco de dados.
public void desconecta() { boolean result = true; try { conexao.close(); JOptionPane.showMessageDialog(null,banco de dados fechado); } catch(SQLException fecha) { JOptionPane.showMessageDialog(null,No foi possvel fechar o banco de dados: +fecha); Result = false; } }

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


CRIAR UM MTODO PARA OS COMANDOS SQL: public void executeSQL(String sql) //o mtodo acima generalizado (executeSQL), pois no momento em que for chamado de //uma outra classe ser passado um parmetro (String sql) para ele saber o que // queremos que ele execute (inserir/ excluir no banco, atualizao, consulta, etc) { try { statement = conexao.createStatement(); //o statement cria uma ligao com o banco de dados e executa comandos sql resultset = statement.executeQuery(sql); //o resultset que o lugar onde ficaro armazenados os dados da nossa //tabela, ir, atravs da ligao statement, executar atravs do mtodo //executeQuery o sql que foi passado por parmetro (String sql) }
ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


catch(SQLException sqlex) //tratamento de erro no caso de no conseguir fazer a ligao com o banco //a varivel sqlex vai armazenar o erro { JOptionPane.showMessageDialog(null,No foi possvel executar o comando sql,+sqlex+ , o sql passado foi+sql) //vai ser mostrada uma mensagem para o usurio, onde ser mostrado o erro //e o comando sql tambm ser mostrado, pois poder ter erro } }

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


EFETUAR A CONEXO COM O BANCO DE DADOS: Agora estamos prontos para efetuar a conexo. Como fazer para usar a classe conexo dentro do Sistema de Cadastro de Clientes?

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


1 - Selecione o formulrio Sistema de Cadastro de Clientes Cdigo-fonte digite os cdigos indicados: import Utilitarios.conexao; import java.sql.SQLException; import javax.swing.JOptionPane; public class cad_clientes extends javax.swing.JFrame { conexao con_clientes; public cad_clientes() { initComponents(); con_clientes = new conexao(); con_clientes.conecta();

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


con_clientes.executeSQL("select * from cadastro"); try//precisamos da estrutura para tratamento de exceo e manipulao de banco de dados { con_clientes.resultset.first(); tf_codigo.setText(con_clientes.resultset.getString("Cdigo")); tf_empresa.setText(con_clientes.resultset.getString("Empresa")); tf_endereco.setText(con_clientes.resultset.getString("Endereo")); tf_cidade.setText(con_clientes.resultset.getString("Cidade")); . } catch(SQLException erro) { JOptionPane.showMessageDialog(null, "No localizou dados "+erro); } }

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Agora, vamos alterar o nome da varivel do jComboBox de UF: cb_uf Vamos continuar inserindo o cdigo na aplicao: . cb_uf.setSelectedItem(con_clientes.resultset.getString("uf"));

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com

Conexo da aplicao Java com o banco de dados


Ativando os botes de navegao pelos registros do banco de dados:
O primeiro passo renomear os botes. Ex: botao_primeiro , botao_anterior, botao_proximo, botao_ultimo Dessa forma fica mais fcil a identificao e o entendimento do que estamos fazendo no cdigo fonte. Logo aps, precisamos adicionar um evento aos botes Clique com o boto direito do mouse sobre eles Eventos Action actionPerformed Selecione o bloco try-catch e cole, por exemplo, no espao de cdigo do botao_proximo. Altere a palavra reservada first para next (Agora o bloco try-catch vai tentar capturar o prximo registro). Execute o arquivo e verifique se est atualizando os dados.

ALBERTO WILLIAN MASCARENNHAS http://sites.google.com/site/awmascarenhas/ awmascarenhas@gmail.com