Programação Orientada a Objetos JDBC Java Database Connectivity



Documentos relacionados
Integrando Java com Banco de Dados

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Aula 1 Acesso a Banco de Dados

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. JDBC - Java Database Connectivity A,L,F,M

Acesso a Bancos de Dados em Java (JDBC)

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Java e Conexão com Banco de Dados

Programação com Acesso a Banco de Dados

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

Desenvolvimento Web TCC Turma A-1

JAVA JDBC Java Database Connectivity

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.

Leonardo Gresta Paulino Murta

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

JDBC. Java DataBase Connectivity

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

Desenvolvimento de Sistemas de Informação

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

JDBC Acessando Banco de Dados

JDBC (Fundamentos) Sang Shin Java Technology Architect Sun Microsystems, Inc.

Conectividade de Banco de Dados Java JDBC

JAVA JDBC COMO FUNCIONA. Programação Orientada a Objetos Flávio de Oliveira Silva 315. Programação Orientada a Objetos Flávio de Oliveira Silva 316

Manipulação de Banco de Dados com Java 1. Objetivos

JDBC. Prof. Márcio Bueno

Programação Orientada a Objetos (DPADF 0063)

Linguagens de Programação

Java 2 Standard Edition Fundamentos de

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

JavaServer Faces JSF

Programação em Rede JDBC

Java na WEB Banco de Dados

Java Básico JDBC. Razer Anthom Nizer Rojas Montaño Banco de Dados: JDBC

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Acessando dados em Java com JDBC

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Especialização em web com interfaces ricas

JPA: Persistência padronizada em Java

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

CONEXÃO JAVA - BANCO DE DADOS

Acessando bancos de dados com o JDBC

(UFF) JDBC (I) TEPIS II

Persistência de Classes em Tabelas de Banco de Dados

Orientação a Objetos

Introdução à Tecnologia Java 02/2012. Java Aula 05 12/09/2012. Celso Olivete Júnior.

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

JDBC Java Database Connectivity

Banco de Dados. Prof. Leonardo Barreto Campos 1

Acesso a banco de dados

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Tecnologias Java JDBC. Marcio Seiji Oyamada

JDBC - Java Data Base Connectivity

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Aula 4 JDBC - Java Database Connectivity

Capítulo 1. Acesso a Banco de Dados com JDBC (Java Database Connectivity) e o Padrão de Projeto DAO (Data Access Object)

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

JAVA 14 ODBC / JDBC Aceder a Bases de Dados através da Internet. Vitor Vaz da Silva

Acesso a Bancos de Dados (JDBC) Desenvolvimento de Aplicações em Java O QUE É JDBC JAVA E JDBC CARACTERÍSTICAS DE JDBC

No cabeçalho de cada arquivo Java onde haverá acesso a banco de dados, o seguinte Import deve ser colocado:

Programação Orientada a Objetos II

Programação com Acesso a BD. Programação com OO Acesso em Java

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Driver Mysql para Banco de Dados. Conexão com um Banco de Dados

Figura 1. A Classe Java

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Capítulo 35. Sistemas de Banco de Dados. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

Curso: Desenvolvimento Java

MySQL. Transacções em MySQL

Autenticação e Autorização

Padrões de Projeto e Persistência com DAO

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

C# - Conexão com MySQL

Drive MySql de conexão para Eclipse

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes

Curso de Java Módulo III JDBC Fábio Mengue Centro de Computação - Unicamp

Desenvolvimento Web com Struts

Exercícios de fixação: Listas

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

Transcrição:

Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br

Objetivos Apresentar os conceitos básicos da especificação de Java Database Connectivity. Utilizar os conceitos na prática para integrar aplicações Java com bancos de dados. 2

O quê é JDBC Especificação de Java Database Connectivity API para acesso a SGBDs em Java envia comandos SQL para o SGBD e processa os resultados como tipos de dados em Java Baseada em interfaces simples - Driver - Statement - Connection - ResultSet 3

Arquitetura JDBC A P L I C A Ç Ã O JDBC Driver Banco de Dados 4

Integrando Java com Banco de Dados Etapas da integração instalar o(s) driver(s) JDBC na máquina e configurar o ambiente de execução registrar o(s) driver(s) JDBC estabelecer uma conexão com o SGBD submeter a execução de comandos SQL ao SGBD processar os resultados encerrar a conexão 5

Integrando Java com Banco de Dados Pacote java.sql interfaces Driver Connection Statement ResultSet PreparedStatement... classes DriverManager Date Time Timestamp... 6

Registrando drivers JDBC Carregue o(s) driver(s) JDBC necessários à aplicação Class.forName(nome_do_driver); o nome do driver é fornecido pelo provedor do BD Exemplo: Class.forName( com.mysql.jdbc.driver ); 7

Criando uma conexão JDBC referencia bancos de dados individualmente através do formato da URL jdbc : <subprotocol> : <subname> subprotocol: nome do driver subname: nome e caminho da base de dados Exemplos de url: jdbc:mysql://host:port/database jdbc:oracle:thin:@host:port:database jdbc:db2://host:port/database O formato da URL varia com o fornecedor do driver. É preciso consultar a documentação. 8

Criando uma conexão Utilize a classe java.sql.drivermanager para criar uma conexão com o SGBD static Connection getconnection( String url, String user, String password) throws SQLException Exemplo Connection con = DriverManager. getconnection(url,login, password); 9

java.sql.connection Métodos básicos da API 1.0 Statement createstatement() throws SQLException void setautocommit(boolean) throws SQLException void commit() throws SQLException void rollback() throws SQLException void close() throws SQLException 10

Exemplo: criando conexão Connection con = null; Class.forName( com.mysql.jdbc.driver"); String url = " jdbc:mysql://localhost:3306/mysql "; String login = scbs"; String senha = "****"; con = DriverManager.getConnection(url,login,senha); ODBC Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:base-teste 11

Executando comandos SQL Utilize a classe java.sql.statement para enviar comandos SQL para o SGBD crie um Statement a partir da conexão Exemplo: Statement stm = con.createstatement(); 12

java.sql.statement... int executeupdate(string sql) throws SQLException utilize para executar comandos INSERT, UPDATE, DELETE, CREATE, DROP, etc.) ResultSet executequery(string sql) throws SQLException utilize para executar comandos SELECT void close() SQLException 13

Exemplo: criando uma tabela Statement stmt = null; String cmd = "CREATE TABLE usuarios (" + "email VARCHAR(60) NOT NULL PRIMARY KEY," + " nome VARCHAR(80) NOT NULL)"; try { stmt = con.createstatement(); stmt.executeupdate(cmd); } catch (SQLException ex) {...} finally { if (stmt!= null) { try { stmt.close(); } catch(sqlexception ex) {...} } } 14

Inserindo dados na tabela Statement stmt = null; String cmd = INSERT INTO usuarios " + VALUES (\ sergio@dsc.upe.br\," + \ Sergio Soares\ )"; try { stmt = con.createstatement(); stmt.executeupdate(cmd); } catch (SQLException ex) {... } finally { if (stmt!= null) { try { stmt.close(); } catch(sqlexception ex) {... } } } 15

Executando comandos SQL Utilize a classe java.sql.resultset para acessar os dados resultantes de uma consulta SQL (SELECT) Exemplo: ResultSet rs = stmt.executequery( SELECT * FROM usuario ); 16

java.sql.resultset boolean next() throws SQLException posiciona o cursor na próxima linha inicialmente o cursor esta antes da primeira linha String getstring(int col) throws SQLException String getstring(string nomecoluna) throws SQLException void close() throws SQLException... 17

ResultSet.getXXX métodos Tabela de métodos e tipos de dados o X indica que o método é o mais recomendado para o tipo do dado 18

Exemplo: consultando dados Statement stmt = null; ResultSet resultado = null; String cmd = SELECT * FROM usuarios ; try { stmt = con.createstatement(); resultado = stmt.executequery(cmd); while (resultado.next()) { String nome = resultado.getstring( nome ); String email = resultado.getstring( email ); System.out.println( Nome: + nome + - Email: +email); } } catch (SQLException ex) {... } finally { if (resultado!= null) { try { resultado.close(); } catch(sqlexception ex) {... } } // feche o statement (stmt) também... } 19

java.sql.preparedstatement subclasse de java.sql.statement os comandos são pré-compilados depende do suporte do driver os comandos SQL podem possuir um ou mais parâmetros IN parâmetros sem valor especificado em tempo de compilação do comando SQL representados por? (parameter marker) o valor precisa ser especificado antes da execução do comando 20

java.sql.preparedstatement reduz o tempo de execução para comandos SQL que são executados várias vezes seguidas os métodos execute, executequery e executeupdate foram modificados para não receber argumentos não utilize os métodos herdados de Statement que recebem o comando SQL como argumento 21

java.sql.preparedstatement Criando um PreparedStatement utilize o método preparestatement (String) de java.sql.connection lembre-se de colocar as? para marcar os parâmetros que serão informados 22

java.sql.preparedstatement Informando parâmetros os parâmetros são passados por métodos do tipo setxxx(int pos, XXX value) XXX corresponde ao tipo do parâmetro pos é a posição do parâmetro (marcador? ) começando por 1 ATENÇÃO: a contagem não começa em 0 (zero) uma vez definido, o valor do parâmetro pode ser utilizado para várias execuções do comando até ser substituído por um novo valor, ou até uma chamada ao método clearparameters() 23

java.sql.preparedstatement Exemplo // comando SQL a ser executado String comandosql = UPDATE empregados + SET sal = (sal*1.1) + WHERE depto_num =? ; PreparedStatement pstmt = con.preparestatement(comandosql); //informe o valor do parâmetro? pstmt.setint(1, 10); //execute o comando pstmt.executeupdate(); 24

Mapeando tipos SQL e Java Java vs SQL os tipos de dados não são iguais JDBC provê mecanismos para conversão entre os tipos métodos getxxx, setxxx, registeroutparameter e a classe java.sql.types Diferentes provedores de SGBDs adotam nomeclaturas de tipos diferentes 25

Mapeando tipos SQL e Java Mapeamento de tipos em JDBC para tipos em Java 26

Tratamento de Exceções A maioria dos métodos das classes Statement e Connection levantam a exceção SQLException Tratando as exceções try {...} catch (SQLException e) {...} finally {...} captura e tratamento local captura e lançamento de uma nova exceção adiciona semântica da aplicação 27

Transações Preservam a consistência dos dados do SGBD Propriedades das transações (ACID): atomicidade consistência isolamento durabilidade 28

Implementando Transações Propriedade auto-commit de java.sql.connection true realiza commit após cada operação executada pelo Statement ser completada (default) false não realiza commit automaticamente 29

Implementando Transações Métodos setautocommit(boolean autocommit) define o modo de commit commit() confirma a transação rollback() cancela a transação 30

Implementando Transações Exemplo de transação com JDBC Aplicacao setautocommit(false) stmt_ins = con.createstatement() con : Connection stmt_ins : Statement error = executeupdate(insertstatement) if (!error) commit() if (error) rollback() Em caso de erro, desfaça as operações. Encerre a transação e restaure o estado do auto commit. setautocommit(true) 31

E o projeto? Agora podemos implementar um repositório em meio persistente! Vide o FAQ avançado! http://www.cin.ufpe.br/~scbs/ceut/ 32

Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br