Java Database Connectivity - JDBC
Dinarte Alves Martins Filho
dinarte@gmail.com
Agenda
 O que é JDBC
 Características do JDBC
 Drivers JDBC
 Arquitetura do JDBC
 Principais Insterfaces
 Como usar ...
Java Database Connectivity - JDBC
 Java SE
 Database Tecnologies
 Java DB
 Java Data Objects JDO
 The Java Database C...
Java Database Connectivity - JDBC
DML – Data Manipulation Language
DDL – Data Defination Language
DCL – Data Control Langu...
Java Database Connectivity - JDBC
 Outras características do JDBC
 É multi-sgbd: suporta vários tipos gerenciadores de
b...
Driver JDBC
 O Que é um Driver?
 Analogia: Um driver é um software que permite que o
computador se comunique com o hardw...
Arquitetura do JDBC
Moelo de Interfaces JDBC
 Principais Interfaces
Principais Intefaces do JDBC
 Connection
 Estabelece uma conexão com o Banco de Dados.
 Statement
 Envias as instruçõe...
Como usar?
 Baixar o Driver específico para o seu banco de
dados.
 Adicionar o jar do Driver ao classpath da sua
aplicaç...
Passos do JDBC
 Carregar o Driver
 Conectar ao Banco de Dados
 Executar a consulta SQL
(select/Insert/update/delete/ et...
Passos do JDBC
 Carregar o Driver
 Class.forName(“com.mysql.jdbc.Driver”).newInstance();
 Conectar ao Banco de Dados
St...
Passos do JDBC
 Executar a consulta SQL
 a) Criar o Statement:
 Statment stmt= conn.createStatment();
 Agora o obejeto...
Passos do JDBC
 Processar os resultados
 a) Executando uma consulta:
ResultSetrs = stmt.executeQuery(“SELECT * FROM user...
Vamos praticar?
Mais Sobre o ResultSet
 ResultSet é uma interface que representa uma Tabela do Banco de Dados.
 Um objeto ResultSet é ge...
ResultSet Navegável e Editável
 É possível obter um objeto do tipo ResultSet onde
pode-se andar com o sursor bidirecional...
ResultSet Navegável e Editável
Alteração de Dados via ResultSet
Inserção de Dados via ResultSet
Vamos praticar?
Controle de Transações com JDBC
 Muitas vezes precisamos executar várias instruções
SQL no banco de dados onde uma destas...
Controle de Transações com JDBC
 Recapitulando:
 Inserir um registro na entidade Venda.
 Inserir um ou mais registros n...
Controle de Transações com JDBC
 Então devemos garantir que todas as operações envolvidas
nesta regra de negócio sejam ex...
Controle de Transações com JDBC
 Para executar todas as operações no banco?
 commit
 Para abortar todas as operações?
...
Vamos praticar?
Referencias
 http://pt.stackoverflow.com/questions/39602/transa%
C3%A7%C3%A3o-java-sqlserver-dividida-em-
v%C3%A1rios-m%C...
Java database connectivity   jdbc
Próximos SlideShares
Carregando em…5
×

Java database connectivity jdbc

294 visualizações

Publicada em

Seminário sobre JDBC.

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
294
No SlideShare
0
A partir de incorporações
0
Número de incorporações
13
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Java database connectivity jdbc

  1. 1. Java Database Connectivity - JDBC Dinarte Alves Martins Filho dinarte@gmail.com
  2. 2. Agenda  O que é JDBC  Características do JDBC  Drivers JDBC  Arquitetura do JDBC  Principais Insterfaces  Como usar o JDBC  JDBC Passo a Passo  Pratica I  Mais Sobre o ResultSet (Navegabilidade e Edição)  Pratica II  Controle de Transações com JDBC  Pratica III
  3. 3. Java Database Connectivity - JDBC  Java SE  Database Tecnologies  Java DB  Java Data Objects JDO  The Java Database Connectivity (JDBC)  JDBC é uma API (Conjunto de Classes e Interfaces) presente no Java SE que encapsula a complexidade da comunicação com SGBDs.  Enviar informações para um banco de dados  Receber informações de um banco de dados (Resultado de Consultas)  Suporta DML e DDL, DCL e TCL*
  4. 4. Java Database Connectivity - JDBC DML – Data Manipulation Language DDL – Data Defination Language DCL – Data Control Language TCL – Transaction Control Language COMMIT ROLLBACK * O JDBC implementa de forma programática, Através de métodos presentes na API.
  5. 5. Java Database Connectivity - JDBC  Outras características do JDBC  É multi-sgbd: suporta vários tipos gerenciadores de banco de dados diferentes.  Suas Classes estão no pacote java.sql e javax.sql do Java SE.  Os pacotes acima já estão embutidos no na plataforma Java SE.  http://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/  Trata objetos do banco de dados (Tabelas, Linhas, Colunas, Dados) como objetos java.  Utiliza-se de Drives para conectar a um SGBD específico.
  6. 6. Driver JDBC  O Que é um Driver?  Analogia: Um driver é um software que permite que o computador se comunique com o hardware ou com os dispositivos. Sem drivers, o hardware conectado ao computador, por exemplo, uma placa de vídeo ou uma impressora, não funcionará corretamente.  Driver JDB  Um driver JDBC é um componente de software que permite que uma aplicação Java interaja com um banco de dados. Para conectar com bancos de dados individuais, o JDBC (a API Java Database Connectivity) requer drivers para cada banco de dados. O driver JDBC fornece a conexão ao banco de dados e implementa o protocolo para transferir a consulta e o resultado entre cliente e banco de dados.
  7. 7. Arquitetura do JDBC
  8. 8. Moelo de Interfaces JDBC  Principais Interfaces
  9. 9. Principais Intefaces do JDBC  Connection  Estabelece uma conexão com o Banco de Dados.  Statement  Envias as instruções para serem executadas no Banco de Dados.  ResultSet  Implementa um cursor no banco de dados que possibilita manipular os registros do resultado de uma consulta.
  10. 10. Como usar?  Baixar o Driver específico para o seu banco de dados.  Adicionar o jar do Driver ao classpath da sua aplicação.  No Eclipse: Project -> Properts -> Java Build Path -> Libraries -> Add External JARs.
  11. 11. Passos do JDBC  Carregar o Driver  Conectar ao Banco de Dados  Executar a consulta SQL (select/Insert/update/delete/ etc...)  Processar os resultados  Fechar a Conexão;
  12. 12. Passos do JDBC  Carregar o Driver  Class.forName(“com.mysql.jdbc.Driver”).newInstance();  Conectar ao Banco de Dados String url = “jdbc:mysql://localhost/dbname?user=login&password=xxxxx” Connection conn = DriveManager.getConnection(url);
  13. 13. Passos do JDBC  Executar a consulta SQL  a) Criar o Statement:  Statment stmt= conn.createStatment();  Agora o obejeto stmt será usado para enviar instruções ao banco de dados:  executeQuery() para SELECT  executeUpdate() para INSERT, UPDATE, DELETE  B) Enviar os Statements  stmt.executeQuery(“SELECT* FROM Pessoa”);
  14. 14. Passos do JDBC  Processar os resultados  a) Executando uma consulta: ResultSetrs = stmt.executeQuery(“SELECT * FROM useres”); while (rs.next()) { String userId = rs.getString(“userId”) //nome da coluna String firstName = rs.getString(2) //índice da coluna int type = rs.getInt(“type”) }  b) Inserindo uma linha: int rows = stmt.executeUpdate(“INSERT INTO users VALUES(‘dinarte’, ‘Dinarte’,’Alves’,’123456’)”);  Fechar a Conexão: rs.close(); //por padrão o resultset fecha automaticamentejunto com a instruçãode fechamento do statement. stmt.close(); conn.close(); http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html
  15. 15. Vamos praticar?
  16. 16. Mais Sobre o ResultSet  ResultSet é uma interface que representa uma Tabela do Banco de Dados.  Um objeto ResultSet é geralmente gerado pela a execução de um statment.  Por padrão um objeto ResultSet mantém um cursor posicionado na linha atual dos dados, Inicialmente o cursos é posicionado antes da primeira linha.  O método next move o cursor para a próxima linha e retorna false quando não houver mais próxima linha.  É aconselhável o uso do While para interar sobre um ResultSet  Um ResultSet padrão não permite que os dados sejam editados e o cursor só se movimenta para a frente.  Um ResultSet implementa a interface AutoCloseable, significa que ele fecha automáticamente junto com a instrução de fechamento do Statement.
  17. 17. ResultSet Navegável e Editável  É possível obter um objeto do tipo ResultSet onde pode-se andar com o sursor bidirecionalmente, além de promover edição dos dados (Insert, Update, Delete):  Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);  ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");  rs will be scrollable, will not show changes made by others, and will be updatable.
  18. 18. ResultSet Navegável e Editável Alteração de Dados via ResultSet Inserção de Dados via ResultSet
  19. 19. Vamos praticar?
  20. 20. Controle de Transações com JDBC  Muitas vezes precisamos executar várias instruções SQL no banco de dados onde uma destas instruções não fazem sentido sem a execução das outras.  Geralmente isso acontece quando estamos persistindo informações onde uma regra de negócio foi aplicada como por exemplo:  Se eu processo uma venda no meu sistema de vendas, eu tenho que executar as segintes operações:  Inserir um registro na entidade Venda.  Inserir um ou mais registros na entidade ItemVenda.  Alterar o campo qtd_estoque na Entidade Produto de acordo com o numero de produtos vendidos nesta Venda.
  21. 21. Controle de Transações com JDBC  Recapitulando:  Inserir um registro na entidade Venda.  Inserir um ou mais registros na entidade ItemVenda.  Alterar o campo qtd_estoque na Entidade Produto de acordo com o numero de produtos vendidos nesta Venda.  Perceba que no mundo real não faz sentido eu ter uma venda que não possui produtos vendidos (ItemVenda), também não faz sentido um ItemVenda sem que haja uma Venda, Também não faz sentido alterar o meu estoque se não houve venda ou items da venda.  Então, caso uma das operações não fossem consolidadas isso geraria um grave problema de Inconsistência de Dados
  22. 22. Controle de Transações com JDBC  Então devemos garantir que todas as operações envolvidas nesta regra de negócio sejam executadas com sucesso, caso uma delas apresente erro, as demais deveram ser desfeitas: Tente{  Inserir um registro na entidade Venda.  Inserir um ou mais registros na entidade ItemVenda.  Alterar o campo qtd_estoque na Entidade Produto de acordo com o numero de produtos vendidos nesta Venda. Confirmar Operações. } HouveAlgumErro{ Desfazer Tudo. }
  23. 23. Controle de Transações com JDBC  Para executar todas as operações no banco?  commit  Para abortar todas as operações?  rollback  Então vamos lá! Por padrão o Objeto Connection executa o commit das operações de forma automática. Para assumirmos o controle das transações precisamos alterar este comportamento: conn.setAutoCommit(false); try{ ... Executar statement 1... .. Executar statement 2... .. Executar statement X... conn.commit(); }cath(Exception e){ conn.rollback(); }
  24. 24. Vamos praticar?
  25. 25. Referencias  http://pt.stackoverflow.com/questions/39602/transa% C3%A7%C3%A3o-java-sqlserver-dividida-em- v%C3%A1rios-m%C3%A9todos  http://www.devmedia.com.br/jdbc-de-ponta-a-ponta- metadados-transacoes-seguranca-e- otimizacao/8683  http://docs.oracle.com/javase/7/docs/api/java/sql/Re sultSet.html  https://docs.oracle.com/javase/tutorial/jdbc/basics/ret rieving.html  https://docs.oracle.com/javase/tutorial/jdbc/basics/in dex.html  http://pt.slideshare.net/itsec/jdbc-tutorial

×