Linguagens de Programa - PowerPoint PPT Presentation

1 / 29
About This Presentation
Title:

Linguagens de Programa

Description:

P s-Gradu o(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes mafm_at_cin.ufpe.br Aula 31 a 35 - Conectividade com Banco de Dados (JDBC) – PowerPoint PPT presentation

Number of Views:78
Avg rating:3.0/5.0
Slides: 30
Provided by: Admils3
Category:

less

Transcript and Presenter's Notes

Title: Linguagens de Programa


1
  • Linguagens de Programação Orientadas a Objetos
  • Pós-Gradução(Lato-Sensu) em Sistemas de Banco de
    Dados - UFPa
  • Marco Fagundes
  • mafm_at_cin.ufpe.br
  • Aula 31 a 35 - Conectividade com Banco de Dados
    (JDBC)
  • http//www.ufpa.br/sampaio/bd2003/lpoo
  • Elaborado com base no material cedido pelo prof.
    Admilson Ribeiro

? Marco Fagundes
2
Acessando BD com JDBC
  • O JDBC - Java Database Connectivity
  • É uma API para acesso a SGBDs em Java
  • JDBC não leva em consideração características
    intrínsecas sobre uma fonte de dados específica
    ou sobre o esquema de armazenamento de dados
  • Através de JDBC pode-se enviar comandos SQL para
    o BD e processar os resultados

3
Funcionamento do JDBC
  • Deve-se ter um driver JDBC instalado e o ambiente
    de execução configurado
  • Na aplicação o driver JDBC é carregado e
    registrado para uso
  • Em seguida uma conexão com o banco de dados é
    criada
  • Faz a instanciação de um objeto do tipo
    Statement
  • Submete-se as instruções SQL para o SGBD por meio
    do objeto instanciado
  • A partir deste ponto os resultados podem ser
    acessados
  • Finalmente deve-se fechar a conexão

4
Estrutura do JDBC
Aplicativo Java
API JDBC
Gerenciador de driver JDBC
...
Ponte JDBC-ODBC
Driver A
ODBC e BD Drivers
Drivers JDBC
Protocolo de Acesso Proprietários dos BDs
5
Funcionamento do JDBC
  • As classes JDBC estão no pacote java.sql
  • Os programas em Java usam objetos e métodos deste
    pacote para ler e escrever de uma fonte de dados.
  • Um programa que usa JDBC necessitará de um driver
    para a fonte de dados.
  • JDBCODBC.DLL para o windows.

6
Tipos Importantes
  • Interfaces
  • Driver
  • Connection
  • Statement
  • PreparedStatement (sql com parametros)
  • CallableStatement (stored procedure)
  • ResultSet
  • Classes
  • DriverManager
  • Date
  • Time

7
Acessando BD ODBC com a ponte JDBC-ODBC
  • A ponte JDBC-ODBC é implementada como
    JdbcOdbc.class e uma biblioteca nativa para
    acessar o driver ODBC(JDBCODBC.DLL)
  • A vantagem desta ponte é que o JDBC pode acessar
    quase todos os bancos de dados
  • Os drivers ODBC estão amplamente disponíveis
  • ODBC é uma fina camada sobre o JDBC

8
Classes JDBC
  • A classe superior na hierarquia é a DriverManager
  • O JDBC identifica um banco de dados com um URL
  • jdbcodbcltODBC DSNgtUserltusernamegtPWltpasswordgt
  • DriverManager retorna um objeto Connection com o
    uso do método getConnection()
  • A classe Connection efetua a conexão com banco de
    dados

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") Con
nection con DriverManager.getConnection("jdbcod
bc odbcContAcad", "",
"")
9
Classes JDBC
  • As operações de conexão e acesso a banco devem
    ser realizadas em um bloco try...catch
  • Por exemplo

try .... catch (SQLException ex)
System.out.println(ex.getMessage()) catch
(java.lang.Exception ex)
System.out.println(ex.getMessage()) //fim
catch
10
Classes JDBC
  • Cria-se os objetos Statement / PreparedStatement
    / CallableStatement
  • Quando o método executeQuery() é executado, um
    objeto ResultSet é retornado
  • O ResultSet contém linhas de dados que são
    analisadas com o método next()
  • O método executeUpdate() faz atualizações e
    exclusões e retorna o número de linhas afetadas

11
Aplicativo JDBC
  • Uma instrução SQL pode ser executada
    imediatamente(objeto Statement)
  • Uma instrução SQL pode ser compilada(objeto
    PreparedStatement)
  • Uma instrução SQL pode ser uma chamada para uma
    Stored Procedure(objeto CallableStatement)

12
Aplicativo JDBC
  • O método executeQuery() é utilizado para a
    submissão de comandos de consulta ao BD(SELECT)
  • Qdo o método executeQuery() é executado, um
    objeto ResultSet é retornado
  • O ResultSet contém linhas de dados que são
    analisadas com o método next()

13
Aplicativo JDBC
  • O ResultSet contém linhas de dados que são
    analisadas com o método next()

Statement stmt con.createStatement() ResultSet
rs stmt.executeQuery("SELECT FROM Turma")
while(rs.next()) System.out.println(rs.ge
tString(1))
  • O método next()
  • Retorna um boolean
  • Posiciona o cusor na próxima linha (inicialmente
    o cursor está antes da primeira linha
  • String getString(int indiceColuna)
  • String getString(String nomeColuna)
  • getString, getInt, getDouble, etc.

14
Aplicativo JDBC
  • As instruções SQL de atualização(INSERT e UPDATE)
    e exclusão (DELETE) retornam um número inteiro
    que denota o número de linhas afetadas
  • Por exemplo
  • Statement stmt con.createStatement()
  • int i stmt.executeUpdate(INSERT INTO Turma
    VALUES (\001\, \Turma001\) ")

15
Aplicativo JDBC
  • Para essas instruções e também para a execução de
    comando DDL(CREATE, DROP, etc.), o método
    executeUpdate() é utilizado
  • Por Exemplo
  • Statement stmt con.createStatement()
  • ResultSet rs stmt.executeQuery(INSERT INTO
    Turma VALUES (\001\, \Turma001\) ")
  • while(rs.next())
  • System.out.println(rs.getString(1))

16
PrepareStatement
  • Statement pré-compilado
  • Melhoria de performance
  • Utilização de parâmetros

String sql SELECT FROM Turma WHERE CodTurma
? PrepareStatement ps con.prepareStatement(sq
l) ps.setString(1,001) ResultSet rs
ps.executeQuery()
17
CallableStatement
  • Utilizado na chamada de stored procedures

String proc call cons_Turmas CallableStateme
nt cs con.prepareCal(proc) cs.execute()
18
Transações
  • Corresponde a um grupo de operações de devem ser
    executadas de forma atômica.
  • Para implementar uma transação deve-se
  • Iniciar a transação
  • Executar comandos
  • Confirmar ou Desfazer a transação
  • Utilizam-se os métodos da interface Connection
  • setAutoCommit (boolean autoCommit)
  • autoCommit true (o commit é realizado
    automaticamente após o término de cada operação
    executada pelo Statement)
  • commit() transação com sucesso
  • roolback() falha na transação

19
Transações
  • ...
  • try
  • con.setAutoCommint(false)
  • stmt.executeUpdate(...)
  • con.commit()
  • catch (SQLException ex)
  • System.out.println(ex.getMessage())
  • con.rollback()
  • catch (java.lang.Exception ex)
  • System.out.println(ex.getMessage())
  • //fim catch
  • con.setAutoCommint(true)
  • ...

20
Acesso ao BD - Exemplo ODBC-JDBC
  • O acesso a um banco de dados pode ser feito por
    meio do JDBC e da ponte JDBC-ODBC
  • Precisa-se configurar uma fonte de dados ODBC
  • O método getConnection() requer um nome de fonte
    de dados(DSN), ID do usuárioe senha para a fonte
    de dados ODBC
  • O programa ODBC setup permite que se configure a
    fonte de dados

21
Tipos de drivers JDBC
  • Tipo 1 Ponte JDBC-ODBC
  • Tipo 2 Parte Java, parte código nativo
  • Tipo 3 Servidor intemediário de acesso a dados
  • Tipo 4 Puro Java

22
Tipo 1 Ponte JDBC-ODBC
Aplicação
API JDBC
ODBC
Ponte JDBC/ODBC
Banco de Dados
23
Tipo 1 Ponte JDBC-ODBC
  • Acompanha o J2SE
  • Deve-se ter um driver ODBC disponível na máquina
  • Faz acesso JDBC usando drivers ODBC
  • Perde em performance

24
Tipo 2 Java-Nativo
Aplicação
API JDBC
API Nativa
Driver JDBC
Banco de Dados
25
Tipo 2 Java-Nativo
  • Chamadas à API JDBC são convertidas em chamadas à
    API do BD
  • Performance melhor que o do Tipo 1

26
Tipo 3 Servidor Intermediário
Aplicação
Servidor de drivers JDBC
API JDBC
Driver JDBC
Driver Nativo
Banco de Dados
27
Tipo 3 Servidor Intermediário
  • Traduz chamadas JDBC para um protocolo de rede
    independente de BD
  • O servidor intermediário traduz as mensagens para
    o protocolo nativo do BD
  • O servidor pode se conectar com vários tipos de
    BD
  • Servidor de Aplicações

28
Tipo 4 Puro Java
Aplicação
API JDBC
Driver JDBC
Banco de Dados
29
Tipo 4 Puro Java
  • Performance melhor que as dos tipos anteriores
  • Chamadas à API JDBC são convertidas para o
    protocolo de rede usado pelo BD
  • Drivers deste tipo são mais simples de usar e
    instalar
  • Ex thin -gt Oracle
Write a Comment
User Comments (0)
About PowerShow.com