33
Aula 20: JDBC (I) Diego Passos Universidade Federal Fluminense ecnicas de Projeto e Implementac ¸˜ ao de Sistemas II Diego Passos (UFF) JDBC (I) TEPIS II 1 / 33

Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Aula 20: JDBC (I)

Diego Passos

Universidade Federal Fluminense

Tecnicas de Projeto e Implementacao de Sistemas II

Diego Passos (UFF) JDBC (I) TEPIS II 1 / 33

Page 2: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Introducao

Especificacao que prove acesso de mais baixo nıvel a sistemas de Bancos de Dados.I Nıvel mais baixo de abstracao que o JPA.I Desenvolvedor precisa escrever codigo SQL para consultas e atualizacoes.

Prove suporte a uma grande gama de bancos de dados.I Bancos de dados relacionais.

API considerada corporativa, ja que aplicacoes corporativas geralmente acessam bancos dedados.

Diego Passos (UFF) JDBC (I) TEPIS II 2 / 33

Page 3: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Introducao (II)

Apesar de ser considerada uma API corporativa, o JDBC hoje faz parte do J2SE.I Desde a versao 3.0 da especificacao.

Boa parte da API se encontra no pacote java.sql.Mas alguns recursos estao no pacote javax.sql.

Diego Passos (UFF) JDBC (I) TEPIS II 3 / 33

Page 4: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Arquitetura

SGBDs diferentes sao geralmente bastante distintos.I Embora os SGBDs mais usados sejam relacionais, eles diferem em implementacao e recursos.

Alem disso, cada SGBD prove sua propria API.I Escrever aplicacoes portaveis entre SGBDs e geralmente difıcil.

Existem APIs que suportam multiplos Bancos de Dados.I ODBC da Microsoft, por exemplo.I Mas estas em geral so rodam em plataformas especıficas.

Diego Passos (UFF) JDBC (I) TEPIS II 4 / 33

Page 5: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Arquitetura (II)

JDBC foi uma tentativa da Sun de criar uma interface multi-plataforma entre programasJava e Bancos de Dados relacionais.Se um dado Banco de Dados e suportado pelo JDBC, garante-se suporte a determinadasfuncionalidades basicas.

I Entre elas, suporte ao SQL-92.A API encapsula tarefas comuns como:

I Consultas.I Processamento de resultados.I Acesso a meta-dados.I Acesso a informacoes de configuracao.

Diego Passos (UFF) JDBC (I) TEPIS II 5 / 33

Page 6: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Arquitetura (III)

O JDBC utiliza o conceito de driver.Cada empresa/desenvolvedor de um Banco de Dados pode fornecer um driver JDBC.

I Conjunto de classes que implementam as interfaces definidas pela especificacao.I Implementacao das especificidades de cada Banco.

Uma aplicacao pode carregar um ou mais drivers.A partir de configuracoes de identificacao da base de dados, JDBC decide entre os driverscarregados.Multiplos drivers podem ser usados simultaneamente.

I Para acessar bases diferentes.

Diego Passos (UFF) JDBC (I) TEPIS II 6 / 33

Page 7: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Arquitetura (IV)

(Fonte: Java Enterprise in a Nutshell)

Diego Passos (UFF) JDBC (I) TEPIS II 7 / 33

Page 8: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Um Exemplo Basicoimport java.sql.*;

public class JDBCSample {public static void main(java.lang.String[] args) {

try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch (ClassNotFoundException e) {

System.out.println("Unable to load Driver Class");return;

}

try {Connection con = DriverManager.getConnection("jdbc:odbc:companydb", "", "");

Statement stmt = con.createStatement( );ResultSet rs = stmt.executeQuery("SELECT FIRST_NAME FROM EMPLOYEES");

while(rs.next()) {System.out.println(rs.getString("FIRST_NAME"));

}

rs.close();stmt.close();con.close();

}catch (SQLException se) {

System.out.println("SQL Exception: " + se.getMessage( ));se.printStackTrace(System.out);

}}

}

Diego Passos (UFF) JDBC (I) TEPIS II 8 / 33

Page 9: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Um Exemplo Basico (II)

Exemplo ilustra uso tıpico do JDBC.Em primeiro lugar, programa deve carregar o driver apropriado.Isto e feito carregando-se a classe Java correspondente ao driver.No exemplo, e carregado o driver JDBC-ODBC bridge.Como a classe pode nao ser encontrada, codigo pode resultar em excecao.

try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch (ClassNotFoundException e) {

System.out.println("Unable to load Driver Class");return;

}

Diego Passos (UFF) JDBC (I) TEPIS II 9 / 33

Page 10: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Um Exemplo Basico (III)

Em seguida, abrimos uma conexao com a base de dados.Passamos alguns argumentos que permitem esta conexao.Um deles e uma URL em um formato especıfico que identifica a base de dados.

Connection con = DriverManager.getConnection("jdbc:odbc:companydb", "", "");

Diego Passos (UFF) JDBC (I) TEPIS II 10 / 33

Page 11: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Um Exemplo Basico (IV)

Uma vez criada a conexao, podemos criar e executar consultas e atualizacoes.Aqui, fazemos um select simples.O resultado da consulta sera colocado em uma estrutura de dados chamada ResultSet.

Statement stmt = con.createStatement( );ResultSet rs = stmt.executeQuery("SELECT FIRST_NAME FROM EMPLOYEES");

Diego Passos (UFF) JDBC (I) TEPIS II 11 / 33

Page 12: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Um Exemplo Basico (V)

Esta estrutura de dados nos permite iterar pelas tuplas resultantes da consulta.A API fornece metodos especiais para acessarmos os valores de colunas especıficas doresultado.Finalmente, devemos ter o cuidado de desalocar os recursos.

while(rs.next()) {System.out.println(rs.getString("FIRST_NAME"));

}

rs.close();stmt.close();con.close();

Diego Passos (UFF) JDBC (I) TEPIS II 12 / 33

Page 13: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Objetivo da Disciplina

Nesta e nas proximas duas aulas veremos em maiores detalhes o JDBC.O foco e em como usar a API.

I Tipos de drivers.I Como se conectar a uma base.I Como fazer consultas e atualizacoes.I Como percorrer os resultados.I Como tratar erros.I Como lidar com Stored Procedures.I ...

Diego Passos (UFF) JDBC (I) TEPIS II 13 / 33

Page 14: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Drivers

Os drivers sao parte fundamental do JDBC.Dizem como a aplicacao deve se comunicar com o BD.Antes de usar um driver, no entanto, deve-se registra-lo.

I Ha um componente da API chamado DriverManager.I Este componente gerencia os drivers.I Deve ser informado da existencia de um driver antes do uso.

Registro geralmente e feito simplesmente carregando a classe do driver.I Normalmente com o metodo Class.forName().I Recebe uma String como argumento.I Driver pode ser especificado, por exemplo, como argumento de linha de comando.

Diego Passos (UFF) JDBC (I) TEPIS II 14 / 33

Page 15: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Drivers (II)

Note que quando uma aplicacao e executada em um servidor J2EE, o carregamento dedrivers pode ser desnecessario.Os servidores podem ser configurados para carregar o drivers e abrir conexoes paradeterminadas bases.Conexoes passam a ser recursos disponibilizados pelo JNDI.Para a aplicacao, uso e similar ao das EJBs.

I Acessar o servico JNDI.I Especificar a conexao por um nome conhecido.I Utilizar a conexao de forma transparente.I Veremos um exemplo mais a frente.

Diego Passos (UFF) JDBC (I) TEPIS II 15 / 33

Page 16: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Drivers (III)

Ha drivers JDBC para a maioria dos BDs.Estes varios drivers sao geralmente divididos em 4 categorias:

I Drivers tipo 1: drivers JDBC-ODBC bridge.I Drivers tipo 2: drivers parcialmente em Java usando API nativa.I Drivers tipo 3: drivers completamente em Java usando protocolo de rede.I Drivers tipo 4: drivers completamente em Java usando protocolo nativo.

Diego Passos (UFF) JDBC (I) TEPIS II 16 / 33

Page 17: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Drivers Tipo 1

Estes drivers funcionam como uma ponte para sistemas ODBC.O ODBC prove o acesso efetivo ao BD.O driver e apenas um trecho de codigo em Java que traduz as diretivas para o ODBC.Implicitamente, o ODBC utiliza um outro driver para o acesso efetivo ao BD.

I Transparente para o codigo em Java.O driver do tipo 1, em si, e portavel.

I Mas requer software ODBC previamente instalado na maquina.

Diego Passos (UFF) JDBC (I) TEPIS II 17 / 33

Page 18: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Drivers Tipo 2

Estes drivers utilizam codigo nativo de uma API especıfica do BD para acessa-los.Eles funcionam como uma camada de abstracao em Java, escondendo o codigo nativo.Chamadas JDBC sao traduzidas para chamadas do codigo nativo.Por utilizarem codigo nativo para o acesso efetivo ao BD:

I Resultam geralmente em bom desempenho.I Podem trazer problemas de portabilidade.

Diego Passos (UFF) JDBC (I) TEPIS II 18 / 33

Page 19: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Drivers Tipo 3

Sao drivers que utilizam uma camada intermediaria para acesso ao BD.Esta camada pode estar, por exemplo, em um servidor de aplicacao.A comunicacao com a camada intermediaria e feita atraves de um protocolo de redegenerico.O middleware (camada intermediaria) traduz os comandos JDBC para comandos nativosdo BD.O mesmo driver pode ser usado para acessar multiplos BDs.

I Assumindo que o middleware os suporte.O driver em si e totalmente escrito em Java.

Diego Passos (UFF) JDBC (I) TEPIS II 19 / 33

Page 20: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Drivers Tipo 4

Alguns fabricantes/desenvolvedores fornecem drivers tipo 4.Neste caso, o driver implementa diretamente o protocolo de rede especıfico do BD.Estes drivers sao completamente escritos em Java.

I Nao utilizam softwares intermediarios.Por este motivo, sao completamente portaveis.

I Para qualquer plataforma que suporte Java.

Diego Passos (UFF) JDBC (I) TEPIS II 20 / 33

Page 21: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Drivers: Resumo

Note que, para um mesmo BD, multiplos drivers podem estar disponıveis.Muitas vezes, um desenvolvedor e obrigado a fazer uma opcao por um destes drivers.E preciso pesar os pros e contras.

I Drivers dos tipos 2 e 4 tendem a ser mais rapidos, pois nao ha intermedio de outros servicos.I Os do tipo 2 podem ser ainda mais eficientes por utilizarem codigo nativo, mas sao menos

portaveis.I Drivers dos tipos 1 e 3 permitem uma alteracao mais facil entre BDs diferentes.

Diego Passos (UFF) JDBC (I) TEPIS II 21 / 33

Page 22: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: URLs

Uma vez carregado o driver adequado, e preciso especificar qual base de dados se desejaconectar.Isto e feito atraves de uma URL, que especifica informacoes de identificacao e (muitasvezes) autenticacao.O formato da URL de uma base de dados varia.

I Nao so dependendo do BD, mas tambem do driver.Tipicamente, no entanto, a URL tem formato geral jdbc:driver:databasename.Alguns drivers exigem outras informacoes:

I jdbc:oracle:thin:@site:port:database.I jdbc:odbc:datasource;odbcoptions.

Diego Passos (UFF) JDBC (I) TEPIS II 22 / 33

Page 23: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Conectando a uma Base de Dados

Conexoes a bases de dados sao encapsuladas por objetos da classe java.sql.Connection.Uma mesma aplicacao pode manter multiplas conexoes simultaneas.

I Com varias bases de dados.I De varios BDs diferentes.I Usando drivers distintos.

A criacao de uma conexao e feita com o intermedio do DriverManager.Utiliza-se o metodo getConnection():

Connection con = DriverManager.getConnection("url", "user", "password");

Diego Passos (UFF) JDBC (I) TEPIS II 23 / 33

Page 24: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Conectando a uma Base de Dados (II)

Na sua forma tıpica, o metodo recebe tres argumentos:I A URL identificando a base a ser acessada.I Um nome de usuario.I Uma senha.

Nome de usuario e senha devem ser credenciais validas para a conexao com o Banco.I Se o Banco nao exige autenticacao, pode-se passar os dois ultimos argumentos como Strings

vazias.

Diego Passos (UFF) JDBC (I) TEPIS II 24 / 33

Page 25: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Conectando a uma Base de Dados (III)

O DriverManager pega a URL passada e consulta cada um dos drivers registrados.I Perguntando se algum deles entende a URL.

Se a URL e reconhecida por um dos drivers, este e usado e um objeto Connection eretornado.Como os drivers sao indagados pelo DriverManager e uma boa pratica evitar carregardrivers nao usados.

Diego Passos (UFF) JDBC (I) TEPIS II 25 / 33

Page 26: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Conectando a uma Base de Dados (IV)

O metodo getConnection() tem ainda outras duas variantes:I getConnection(String).I getConnection(String, Properties).

A primeira recebe apenas uma URL e tenta conectar ao BD sem nome de usuario e senha.I Ou com as credenciais fornecidas na propria URL.

A segunda recebe, alem da URL, um mapeamento de propriedades.I Em geral, possui ao menos as propriedades username e password.

Diego Passos (UFF) JDBC (I) TEPIS II 26 / 33

Page 27: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

JDBC: Fechando Conexoes

Ao contrario de outros recursos tipicamente usados em Java, e uma boa pratica destruirexplicitamente objetos do tipo Connection.Alem da memoria associada a estrutura de dados, este objeto agrega varios recursosimplicitamente:

I A conexao em si ao BD (que pode limitar o numero de conexoes simultaneas).I Cursores.I Descritores de arquivos.I ...

Isto vale para outros objetos da API tambem (como resultados de consultas).

Diego Passos (UFF) JDBC (I) TEPIS II 27 / 33

Page 28: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Objetos DataSource: Metodo Alternativo de Conexao

A interface DataSource prove uma alternativa ao DriverManager para conexoes a BDs.Ao inves da aplicacao ser responsavel por especificar informacoes de conexao a uma base,esta informacao e armazenada em um servico JNDI.A aplicacao se conecta a um servico JNDI, obtem as informacoes na forma de um objetoDataSource.Este objeto prove um metodo para a obtencao de uma conexao a base.No servico JNDI, um DataSource recebe um nome logico (configuravel).Esta alternativa e geralmente mais portavel que o uso do DriverManager.

I Permite a alteracao facil de driver e base de dados, sem alteracao do codigo da aplicacao.

Diego Passos (UFF) JDBC (I) TEPIS II 28 / 33

Page 29: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Objetos DataSource: Metodo Alternativo de Conexao (II)

Exemplo de conexao a BD com DataSource:

Context ctx = new InitialContext();DataSource ds = (DataSource) ctx.lookup("jdbc/CamelDB");Connection con = ds.getConnection("lawrence", "arabia");

Duas primeiras linhas obtem um DataSource do servico JNDI.Metodo getConnection() efetivamente abre a conexao.Diferentemente do DriverManager, so precisamos especificar usuario e senha.

Diego Passos (UFF) JDBC (I) TEPIS II 29 / 33

Page 30: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Pooling de Conexoes

Para aplicacoes pequenas, usar o DriverManager e mais simples.I Nao requer configuracao de um servidor de aplicacao, servico JNDI, . . .

Mas o uso do DataSource tem suas vantagens:I Simplifica o codigo da aplicacao (nao e necessario carregar drivers ou conhecer a URL da base).I Da suporte a Connection Pooling : utilizar (e re-utilizar) conexoes para distribuir carga das

requisicoes entre elas.Em geral, o pool de conexoes e gerenciado pelo servidor de aplicacao, de formatransparente para a aplicacao.

Diego Passos (UFF) JDBC (I) TEPIS II 30 / 33

Page 31: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Pooling de Conexoes (II)Neste arquitetura, o driver JDBC cria um conjunto de conexoes a as distribui pelosprogramas, conforme necessario.Quando um programa termina de usar uma conexao, ele a retorna para o pool.Isto elimina (ou reduz) o overhead de criacao de conexoes.Do ponto de vista dos clientes, seu uso e igual ao de um DataSource “normal”.Mas e fundamental garantir que a conexao seja devolvida ao pool.

I Isto e feito, “fechando” a conexao.I Como manipulacoes de bases de dados podem resultar em excecoes, e uma boa pratica usar

blocos do tipo try/catch/finally:

Connection con = null;try {

Context ctx = new InitialContext();DataSource ds = (DataSource) ctx.lookup("jdbc/CamelDB");Connection con = ds.getConnection("lawrence", "arabia");// Manipulacao da base...

} catch(Exception e) {

//...} finally {

if (con != null)con.close();

}

Diego Passos (UFF) JDBC (I) TEPIS II 31 / 33

Page 32: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Proxima Aula

Consultas e Atualizacoes.Manipulacao de Resultados.Mapeamento de tipos de dados.ResultSets bidirecionais e auto-atualizaveis.Erros e warnings.

Diego Passos (UFF) JDBC (I) TEPIS II 32 / 33

Page 33: Aula 20: JDBC (I) - midiacom.uff.brdiego/disciplinas/2014_2/TEPISII/arquivos/aula2… · JDBC: Introduc¸˜ao Especificac¸˜ao que prov ˆe acesso de mais baixo n´ıvel a sistemas

Referencias

Conteudo e exemplos baseados em:I Jim Farley e William Crawford. Java Enterprise in a Nutshell: A Practical Guide.

F Terceira edicao.F Capıtulo 8.

Diego Passos (UFF) JDBC (I) TEPIS II 33 / 33