SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
CONEXÃO JAVA - BANCO
DE DADOS

RAQUEL, HEITOR, TIAGO, GEWTON




  Instituição Federal do Rio Grande do Norte- www.cefetrn.br
JDBC

JAVA DATABASE CONNECTIVITY
INTRODUÇÃO
    API JDBC possibilita ao programador de aplicações

    Java abrir conexões com um SGBD, consultar e
    modificar algum BD, utilizando a linguagem SQL.



    Características:

      Portabilidade
      API independente do Banco de Dados
PADRÃO JDBC DE ACESSO A BASES DE DADO
  API de acesso para executar comandos SQL


 Implementa as interfaces do pacote padrão
  java.sql
 Envio para qualquer tipo de Banco de Dados
  relacional
 Independente de API/Linguagem proprietária
  dos fabricantes de SGBD (Microsoft, Oracle,
  Informix, …)
 Uso de drivers específicos de fabricantes
ARQUITETURA JDBC
ARQUITETURA JDBC

    Aplicações Java “conversam”

    com o Gerenciador de Drivers
    JDBC (DriverManager)

    Este, por sua vez, se comunica

    com algum driver atualmente
    carregado.

    Programador se preocupa

    apenas com API do gerenciador
    de drivers.

    Drivers se ocupam da interface

    com o SGBD.

    Ponte JDBC pode ser usada se

    não existir um driver para um
    determinado SGBD.
Arquitetura de Desenvolvimento JDBC
IMPLEMENTAÇÃO

    O pacote JDBC vêm incluso com as distribuições Java



    As classes que compões o kit JDBC estão nos pacotes java.sq

    e javax.sql.

    Classes do pacote java.sql: Connection; Statement;

    PreparedStatement; CallableStatement; ResultSet;
    Driver

    Deve-se obter um driver para o sistema de gerência de banco

    de dados a ser utilizado.

    O URL a seguir fornece uma lista de drivers JDBC atualmente

    disponíveis:

    http://industry.java.sun.com/products/jdbc/drivers

CLASSES PRINCIPAIS

    java.sql.DriverManager

        Provê serviços básicos para gerenciar diversos drivers JDBC
    


    java.sql.Connection

        Representa uma conexão estabelecida com o BD.
    


    java.sql.Statement

      Representa sentenças onde são inseridos os comandos SQL
    
     Permite realizar todo o tratamento das consultas (select) e dos comandos de
      atualizações (insert, delete, update)

    java.sql.ResultSet

        Representa o conjunto de registros resultante de uma consulta.
    
        Permite manipular os resultados
    
        Java e SQL
    
        Colunas de um objeto ResultSet podem ser referenciadas por um número
    
        posicional ou pelo nome da coluna do resultado.
        ResultSet rs.getString(Nome) ou ResultSet rs.getString(1)
    
PASSO-A-PASSO

•   Carregar o Driver para a memória definir a
    URL de conexão com o repositório

•   Estabelecer a conexão com o repositório

•   Criar um objeto do tipo Statement

•    Executar uma consulta (recuperar, atualizar,
    incluir)

•    Com o resultado, executar um
    processamento

•   Fechar a conexão
DRIVER
    Implementa a interface Driver



    Todo driver, ao ser carregado, se cadastra junto ao

    DriverManager através de um inicializador
    estático. Basta carregar a classe que o driver
    estará disponível para uso

    Podemos fazer isso explicitamente :




void carregaDrivers() throws ClassNotFoundException {
Class.forName(org.postgresql.Driver);
...
}
CARREGA DRIVE
OBTENDO CONEXÃO

     O argumento para o método getConnection tem um formato
 
     similar ao de uma URL
       jdbc:<subprotocolo>:<subnome>
       Jdbc: Protocolo: JDBC é o único valor possível
     
      subProtocolo: identifica um driver de BD
      Subnome: indica a localização e nome do BD a ser acessado.


     Sintaxe é própria de cada driver
 

     Use o método:
 

     String url =jdbc:mysql://localhost:3306/Empresa;
     DriverManager.getConnection(url, usuario, senha);
     jdbc:postgresql://serverName/mydatabase
ABRINDO CONEXÃO

 try {
      Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
       Connection com =
     DriverManager.getConnection(jdbc:odbc:Northwind,,);
      ...// Código de manipulação do BD
 } catch (ClassNotFoundException e) {
      System.out.println(Classe não Encontrada!);
 } catch (SQLException e) {
      System.out.println(Erro na Conexão!);
 }
CRIANDO COMANDOS SQL
     Classe Connection: implementa a interface Connection
 

     A partir de uma conexão, podemos:
 
       criar comandos SQL (de diferentes formas)
       configurar características da conexão, como:
       controle de transações


     Criando comandos SQL
 

     Class.forName(org.postgresql.Driver);
     Connection conn =
       DriverManager.getConnection(jdbc:postgresql:usuarios);
     Statement stat = conn.createStatement();
     // stat pode ser utilizado para enviar comandos
     // SQL à base de dados
CRIANDO COMANDOS SQL(CONT.)
     Métodos
 



 void setAutoCommit(boolean ac) throws SQLException
 void commit() throws SQLException
 void rollback() throws SQLException
 void close() throws SQLException
ENVIANDO COMANDOS SQL

        Statement - envia texto SQL ao servidor
    


    Comandos diretos

      Podem ser diretamente enviados à base através de um objeto que
       implemente a interface Statement
      Comandos DDL, de atualização da base e de consulta são aceitos


    Statement

      Um objeto da classe Statement é uma espécie de canal que envia
       comandos SQL através de uma conexão
      O mesmo Statement pode enviar vários comandos
      Para se criar um Statement, é preciso ter criado anteriormente um
       objeto Connection.
      A partir de uma conexão, pode-se criar diversos objetos Statement.
ENVIANDO COMANDOS SQL(CONT)

     Métodos
 


 ResultSet executeQuery(String sql)throws SQLException
 int executeUpdate(String sql) throws SQLException
 boolean execute(String sql) throws SQLException
 ResultSet getResultSet() throws SQLException
 int getUpdateCount() throws SQLException
 boolean getMoreResults() throws SQLException
EXECULTANDO STATEMENT
      Há dois métodos da classe Statement para envio de comandos
  
      ao SGBD.

      Modificações: executeUpdate
  
        Para comandos SQL “INSERT”, ”UPDATE”, ”DELETE”, ou outros que
      
        alterem a base e não retornem dados
       Forma geral: executeUpdate(<comando>)
       Ex: stmt.executeUpdate(DELETE FROM Cliente);
       Esse método retorna um inteiro: quantas linhas foram atingidas.



      Consultas: executeQuery
  
        Para comandos “SELECT” ou outros que retornem dados
      
       Forma geral: stmt.executeQuery(<comando>);
       Esse método retorna um objeto da classe ResultSet
       Ex: rs = stmt.executeQuery(SELECT * FROM Cliente);
MANIPULANDO UM OBJETO
RESULTSET
       Métodos getXXX
   


       Recuperam um dado de acordo com o tipo
   


       Formas: rs.getXXX(<nome do campo>) ou
   
       rs.getXXX(<posição do campo >)

       Exemplo:rs. getString(“nm_cliente”) ou rs.getString(2)
   


       Método next(), previous() - retornam para o próximo
   
       registro no conjunto ou para o anterior. Retornam valor
       lógico.

       Valor de retorno true indica que há outros registros.
   


       Métodos first(), last() - posicionam o cursor no início ou
   
       no final do conjunto de dados.

       Métodos isFirst(), isLast() - testam a posição do cursor;
   
       retorna valor lógico.
EQUIVALÊNCIA DE TIPOS
JAVAXSQL
OBTENÇÃO DO RESULTADO
       Representado por um ResultSet
   

       Linhas são acessadas em sequência
   

       São invalidados quando seu Statement for:
   
         Fechado;
         re-executado;
         usado para obter o próximo resultado de uma Série;


       Métodos:
   

       public abstract boolean next() throws SQLException
       public abstract void close() throws SQLException
       public abstract boolean getBoolean(int columnIndex)
       throws SQLException
       public abstract boolean getBoolean(String columnName)
       throws SQLException
       ...
       public abstract InputStream getAsciiStream(int
          columnIndex) throws SQLException
       public abstract int findColumn(String columnName)
          throws SQLException
EXEMPLO DE CONSULTA
import java.sql.*; import java.io.*;
  public class Consulta{
    public static void main(String args[]) throws IOException{
      String comando=SELECT * FROM FONES ;
      try{
      Connection con;
      Class.forName(com.ashna.jturbo.driver.Driver);
      con=DriverManager.getConnection (jdbc:JTurbo://rubi/javadb, sa,);
      System.out.println(Conectado OK);
      Statement st = con.createStatement();
      ResultSet rs = st.executeQuery(comando);
      while (rs.next()) {
          System.out.println(Nome: +rs.getString(1)+ Fone: +rs.getString(2));
      }
      st.close(); con.close();
      } catch(SQLException e){
          System.out.println(Erro no SQL!); return;
      } catch(ClassNotFoundException e){
          System.out.println(Driver não Encontrada!); return;
      }
      System.in.read(); }
}
EXEMPLO DE INSERÇÃO
FECHANDO A CONEXÃO

  Uma conexão aberta custa caro para o

  sistema
 Este recurso deve ser liberado e dependendo
  do repositório é esperado outros comandos
  para encerrar a conexão
 Método:
     connection.close();
CONCLUSÕES
 Novos padrões:


 JPA (Java Persistence API)- é um framework
 utilizado na camada de persistência para o
 desenvolvedor ter uma maior
 produtividade, com impacto principal num
 modo para controlarmos a persistência
 dentro de Java. Pela primeira vez, nós,
 desenvolvedores temos um modo padrão
 para mapear nossos objetos para os do
 Banco de Dados.
REFERÊNCIAS BIBLIOGRÁFICAS
  http://www.tecgraf.puc-rio.br/~ismael/Cursos/XJavaDat

 http://www.devmedia.com.br/articles/viewcomp.asp?co
 http://www.cefetrn.br/~minora/jdbc/doku.php
 http://java.sun.com/javase/technologies/database/inde

Más contenido relacionado

La actualidad más candente

Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Trabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de ProgramaçãoTrabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de Programaçãocarlosveiga
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusDenis L Presciliano
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Claudio Martins
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivityffeitosa
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 

La actualidad más candente (20)

Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Trabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de ProgramaçãoTrabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de Programação
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Cactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta CactusCactus - Testes em J2EE com Jakarta Cactus
Cactus - Testes em J2EE com Jakarta Cactus
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Aula1
Aula1Aula1
Aula1
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Jdbc
JdbcJdbc
Jdbc
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 

Similar a Jdbc, JAVA DATABASE CONNECTIVITY

Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbc1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbcJamille Madureira
 
Java database connectivity jdbc
Java database connectivity   jdbcJava database connectivity   jdbc
Java database connectivity jdbcDinarte Filho
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáZarathon Maia
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java IIIVerônica Veiga
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusDenis L Presciliano
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Felipe Mamud
 

Similar a Jdbc, JAVA DATABASE CONNECTIVITY (20)

Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Java13
Java13Java13
Java13
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbc1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbc
 
Introdução ao JDBC - BarreirasJUG
Introdução ao JDBC - BarreirasJUGIntrodução ao JDBC - BarreirasJUG
Introdução ao JDBC - BarreirasJUG
 
Jdbc e hibernate
Jdbc e hibernateJdbc e hibernate
Jdbc e hibernate
 
Java database connectivity jdbc
Java database connectivity   jdbcJava database connectivity   jdbc
Java database connectivity jdbc
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
CURSO JAVA 01
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Java wsdp
Java wsdpJava wsdp
Java wsdp
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com Cactus
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Visão Geral de EJB 3.0
Visão Geral de EJB 3.0Visão Geral de EJB 3.0
Visão Geral de EJB 3.0
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?
 

Más de raquelcarsi

Laszlo, Framework focado em MVC
Laszlo, Framework focado em MVCLaszlo, Framework focado em MVC
Laszlo, Framework focado em MVCraquelcarsi
 
SSL,Secure Sockets Layer
SSL,Secure Sockets LayerSSL,Secure Sockets Layer
SSL,Secure Sockets Layerraquelcarsi
 
XP, Extreme Programming
XP, Extreme ProgrammingXP, Extreme Programming
XP, Extreme Programmingraquelcarsi
 
Apresentacao De Computador Sociedade
Apresentacao De Computador SociedadeApresentacao De Computador Sociedade
Apresentacao De Computador Sociedaderaquelcarsi
 
Mini Curso Java Day(Eliane Raquel)
Mini Curso Java Day(Eliane Raquel)Mini Curso Java Day(Eliane Raquel)
Mini Curso Java Day(Eliane Raquel)raquelcarsi
 

Más de raquelcarsi (8)

Web Semântica
Web SemânticaWeb Semântica
Web Semântica
 
Laszlo, Framework focado em MVC
Laszlo, Framework focado em MVCLaszlo, Framework focado em MVC
Laszlo, Framework focado em MVC
 
SSL,Secure Sockets Layer
SSL,Secure Sockets LayerSSL,Secure Sockets Layer
SSL,Secure Sockets Layer
 
XP, Extreme Programming
XP, Extreme ProgrammingXP, Extreme Programming
XP, Extreme Programming
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Apresentacao De Computador Sociedade
Apresentacao De Computador SociedadeApresentacao De Computador Sociedade
Apresentacao De Computador Sociedade
 
Haskell
HaskellHaskell
Haskell
 
Mini Curso Java Day(Eliane Raquel)
Mini Curso Java Day(Eliane Raquel)Mini Curso Java Day(Eliane Raquel)
Mini Curso Java Day(Eliane Raquel)
 

Jdbc, JAVA DATABASE CONNECTIVITY

  • 1. CONEXÃO JAVA - BANCO DE DADOS RAQUEL, HEITOR, TIAGO, GEWTON Instituição Federal do Rio Grande do Norte- www.cefetrn.br
  • 2.
  • 4. INTRODUÇÃO API JDBC possibilita ao programador de aplicações  Java abrir conexões com um SGBD, consultar e modificar algum BD, utilizando a linguagem SQL. Características:   Portabilidade  API independente do Banco de Dados
  • 5. PADRÃO JDBC DE ACESSO A BASES DE DADO API de acesso para executar comandos SQL   Implementa as interfaces do pacote padrão java.sql  Envio para qualquer tipo de Banco de Dados relacional  Independente de API/Linguagem proprietária dos fabricantes de SGBD (Microsoft, Oracle, Informix, …)  Uso de drivers específicos de fabricantes
  • 7. ARQUITETURA JDBC Aplicações Java “conversam”  com o Gerenciador de Drivers JDBC (DriverManager) Este, por sua vez, se comunica  com algum driver atualmente carregado. Programador se preocupa  apenas com API do gerenciador de drivers. Drivers se ocupam da interface  com o SGBD. Ponte JDBC pode ser usada se  não existir um driver para um determinado SGBD.
  • 9. IMPLEMENTAÇÃO O pacote JDBC vêm incluso com as distribuições Java  As classes que compões o kit JDBC estão nos pacotes java.sq  e javax.sql. Classes do pacote java.sql: Connection; Statement;  PreparedStatement; CallableStatement; ResultSet; Driver Deve-se obter um driver para o sistema de gerência de banco  de dados a ser utilizado. O URL a seguir fornece uma lista de drivers JDBC atualmente  disponíveis: http://industry.java.sun.com/products/jdbc/drivers 
  • 10. CLASSES PRINCIPAIS java.sql.DriverManager  Provê serviços básicos para gerenciar diversos drivers JDBC  java.sql.Connection  Representa uma conexão estabelecida com o BD.  java.sql.Statement  Representa sentenças onde são inseridos os comandos SQL   Permite realizar todo o tratamento das consultas (select) e dos comandos de atualizações (insert, delete, update) java.sql.ResultSet  Representa o conjunto de registros resultante de uma consulta.  Permite manipular os resultados  Java e SQL  Colunas de um objeto ResultSet podem ser referenciadas por um número  posicional ou pelo nome da coluna do resultado. ResultSet rs.getString(Nome) ou ResultSet rs.getString(1) 
  • 11. PASSO-A-PASSO • Carregar o Driver para a memória definir a URL de conexão com o repositório • Estabelecer a conexão com o repositório • Criar um objeto do tipo Statement • Executar uma consulta (recuperar, atualizar, incluir) • Com o resultado, executar um processamento • Fechar a conexão
  • 12. DRIVER Implementa a interface Driver  Todo driver, ao ser carregado, se cadastra junto ao  DriverManager através de um inicializador estático. Basta carregar a classe que o driver estará disponível para uso Podemos fazer isso explicitamente :  void carregaDrivers() throws ClassNotFoundException { Class.forName(org.postgresql.Driver); ... }
  • 14. OBTENDO CONEXÃO O argumento para o método getConnection tem um formato  similar ao de uma URL  jdbc:<subprotocolo>:<subnome> Jdbc: Protocolo: JDBC é o único valor possível   subProtocolo: identifica um driver de BD  Subnome: indica a localização e nome do BD a ser acessado. Sintaxe é própria de cada driver  Use o método:  String url =jdbc:mysql://localhost:3306/Empresa; DriverManager.getConnection(url, usuario, senha); jdbc:postgresql://serverName/mydatabase
  • 15. ABRINDO CONEXÃO try { Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection com = DriverManager.getConnection(jdbc:odbc:Northwind,,); ...// Código de manipulação do BD } catch (ClassNotFoundException e) { System.out.println(Classe não Encontrada!); } catch (SQLException e) { System.out.println(Erro na Conexão!); }
  • 16. CRIANDO COMANDOS SQL Classe Connection: implementa a interface Connection  A partir de uma conexão, podemos:   criar comandos SQL (de diferentes formas)  configurar características da conexão, como:  controle de transações Criando comandos SQL  Class.forName(org.postgresql.Driver); Connection conn = DriverManager.getConnection(jdbc:postgresql:usuarios); Statement stat = conn.createStatement(); // stat pode ser utilizado para enviar comandos // SQL à base de dados
  • 17. CRIANDO COMANDOS SQL(CONT.) Métodos  void setAutoCommit(boolean ac) throws SQLException void commit() throws SQLException void rollback() throws SQLException void close() throws SQLException
  • 18. ENVIANDO COMANDOS SQL Statement - envia texto SQL ao servidor  Comandos diretos   Podem ser diretamente enviados à base através de um objeto que implemente a interface Statement  Comandos DDL, de atualização da base e de consulta são aceitos Statement   Um objeto da classe Statement é uma espécie de canal que envia comandos SQL através de uma conexão  O mesmo Statement pode enviar vários comandos  Para se criar um Statement, é preciso ter criado anteriormente um objeto Connection.  A partir de uma conexão, pode-se criar diversos objetos Statement.
  • 19. ENVIANDO COMANDOS SQL(CONT) Métodos  ResultSet executeQuery(String sql)throws SQLException int executeUpdate(String sql) throws SQLException boolean execute(String sql) throws SQLException ResultSet getResultSet() throws SQLException int getUpdateCount() throws SQLException boolean getMoreResults() throws SQLException
  • 20. EXECULTANDO STATEMENT Há dois métodos da classe Statement para envio de comandos  ao SGBD. Modificações: executeUpdate  Para comandos SQL “INSERT”, ”UPDATE”, ”DELETE”, ou outros que  alterem a base e não retornem dados  Forma geral: executeUpdate(<comando>)  Ex: stmt.executeUpdate(DELETE FROM Cliente);  Esse método retorna um inteiro: quantas linhas foram atingidas. Consultas: executeQuery  Para comandos “SELECT” ou outros que retornem dados   Forma geral: stmt.executeQuery(<comando>);  Esse método retorna um objeto da classe ResultSet  Ex: rs = stmt.executeQuery(SELECT * FROM Cliente);
  • 21. MANIPULANDO UM OBJETO RESULTSET Métodos getXXX  Recuperam um dado de acordo com o tipo  Formas: rs.getXXX(<nome do campo>) ou  rs.getXXX(<posição do campo >) Exemplo:rs. getString(“nm_cliente”) ou rs.getString(2)  Método next(), previous() - retornam para o próximo  registro no conjunto ou para o anterior. Retornam valor lógico. Valor de retorno true indica que há outros registros.  Métodos first(), last() - posicionam o cursor no início ou  no final do conjunto de dados. Métodos isFirst(), isLast() - testam a posição do cursor;  retorna valor lógico.
  • 23. OBTENÇÃO DO RESULTADO Representado por um ResultSet  Linhas são acessadas em sequência  São invalidados quando seu Statement for:   Fechado;  re-executado;  usado para obter o próximo resultado de uma Série; Métodos:  public abstract boolean next() throws SQLException public abstract void close() throws SQLException public abstract boolean getBoolean(int columnIndex) throws SQLException public abstract boolean getBoolean(String columnName) throws SQLException ... public abstract InputStream getAsciiStream(int columnIndex) throws SQLException public abstract int findColumn(String columnName) throws SQLException
  • 24. EXEMPLO DE CONSULTA import java.sql.*; import java.io.*; public class Consulta{ public static void main(String args[]) throws IOException{ String comando=SELECT * FROM FONES ; try{ Connection con; Class.forName(com.ashna.jturbo.driver.Driver); con=DriverManager.getConnection (jdbc:JTurbo://rubi/javadb, sa,); System.out.println(Conectado OK); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(comando); while (rs.next()) { System.out.println(Nome: +rs.getString(1)+ Fone: +rs.getString(2)); } st.close(); con.close(); } catch(SQLException e){ System.out.println(Erro no SQL!); return; } catch(ClassNotFoundException e){ System.out.println(Driver não Encontrada!); return; } System.in.read(); } }
  • 26. FECHANDO A CONEXÃO Uma conexão aberta custa caro para o  sistema  Este recurso deve ser liberado e dependendo do repositório é esperado outros comandos para encerrar a conexão  Método:  connection.close();
  • 27. CONCLUSÕES Novos padrões:   JPA (Java Persistence API)- é um framework utilizado na camada de persistência para o desenvolvedor ter uma maior produtividade, com impacto principal num modo para controlarmos a persistência dentro de Java. Pela primeira vez, nós, desenvolvedores temos um modo padrão para mapear nossos objetos para os do Banco de Dados.
  • 28. REFERÊNCIAS BIBLIOGRÁFICAS http://www.tecgraf.puc-rio.br/~ismael/Cursos/XJavaDat   http://www.devmedia.com.br/articles/viewcomp.asp?co  http://www.cefetrn.br/~minora/jdbc/doku.php  http://java.sun.com/javase/technologies/database/inde