Integrando Java com Banco de Dados



Documentos relacionados
Programação Orientada a Objetos JDBC Java Database Connectivity

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

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

Acesso a Bancos de Dados em Java (JDBC)

Programação com Acesso a Banco de Dados

Java e Conexão com 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

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

Desenvolvimento Web TCC Turma A-1

JAVA JDBC Java Database Connectivity

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

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

Leonardo Gresta Paulino Murta

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

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. Java DataBase Connectivity

Conectividade de Banco de Dados Java JDBC

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

Programação Orientada a Objetos (DPADF 0063)

Desenvolvimento de Sistemas de Informação

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

JDBC. Prof. Márcio Bueno

Java 2 Standard Edition Fundamentos de

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

Linguagens de Programação

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

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

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Java na WEB Banco de Dados

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

JavaServer Faces JSF

Acessando dados em Java com JDBC

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

Programação em Rede JDBC

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

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

Especialização em web com interfaces ricas

Acessando bancos de dados com o JDBC

Orientação a Objetos

CONEXÃO JAVA - BANCO DE DADOS

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

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

JPA: Persistência padronizada em Java

(UFF) JDBC (I) TEPIS II

Persistência de Classes em Tabelas de Banco de Dados

Banco de Dados. Prof. Leonardo Barreto Campos 1

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

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

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

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

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

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

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

Tecnologias Java JDBC. Marcio Seiji Oyamada

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

Programação Orientada a Objetos II

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

Figura 1. A Classe Java

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. Aula 09a- Acessando os dados através JDBC

Curso: Desenvolvimento Java

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

MySQL. Transacções em MySQL

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

C# - Conexão com MySQL

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

PHP INTEGRAÇÃO COM MYSQL PARTE 1

1 R$ 50,00 R$ 50,00 reusable object-oriented software 2 Utilizando UML e padrões: uma

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Desenvolvimento Web com Struts

Controle de transações em SQL

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

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

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

Padrões de Projeto e Persistência com DAO

Exercícios de fixação: Listas

Drive MySql de conexão para Eclipse

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 Arquitetura 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 A P L I C A Ç Ã O JDBC Driver Banco de Dados - Connection - ResultSet 3 4 Integrando Java com Banco de Dados 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 Pacote java.sql interfaces Driver Connection Statement ResultSet PreparedStatement... classes DriverManager Date Time Timestamp... 5 6 1

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) Exemplo Connection con = DriverManager. getconnection(url,login, password); java.sql.connection Métodos básicos da API 1.0 Statement createstatement() void setautocommit(boolean) void commit() void rollback() void close() 9 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); Executando comandos SQL Utilize a classe java.sql.statement para enviar comandos SQL para o SGBD crie um Statement a partir da conexão ODBC Exemplo: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:base-teste Statement stm = con.createstatement(); 11 12 2

java.sql.statement int executeupdate(string sql) utilize para executar comandos INSERT, UPDATE, DELETE, CREATE, DROP, etc.) ResultSet executequery(string sql) utilize para executar comandos SELECT void close() SQLException... Exemplo: criando uma tabela Statement stmt = null; String cmd = "CREATE TABLE usuarios (" + "email VARCHAR(60) NOT NULL PRIMARY KEY," + " nome VARCHAR(80) NOT NULL)"; stmt = con.createstatement(); stmt.executeupdate(cmd); catch (SQLException ex) {... finally { if (stmt!= null) { stmt.close(); catch(sqlexception ex) {... 13 14 Inserindo dados na tabela Statement stmt = null; String cmd = INSERT INTO usuarios " + VALUES (\ sergio@dsc.upe.br\," + \ Sergio Soares\ )"; stmt = con.createstatement(); stmt.executeupdate(cmd); catch (SQLException ex) {... finally { if (stmt!= null) { 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() posiciona o cursor na próxima linha inicialmente o cursor esta antes da primeira linha String getstring(int col) String getstring(string nomecoluna) void close()... 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 17 18 3

Exemplo: consultando dados Statement stmt = null; ResultSet resultado = null; String cmd = SELECT * FROM usuarios ; 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) { resultado.close(); catch(sqlexception ex) {... // feche o statement (stmt) também... 19 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 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 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 21 22 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() 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(); 23 24 4

Mapeando tipos SQL e Java 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 Mapeamento de tipos em JDBC para tipos em Java Diferentes provedores de SGBDs adotam nomeclaturas de tipos diferentes 25 26 Tratamento de Exceções Transações A maioria dos métodos das classes Statement e Connection levantam a exceção SQLException Preservam a consistência dos dados do SGBD Tratando as exceções... catch (SQLException e) {... finally {... Propriedades das transações (ACID): atomicidade consistência captura e tratamento local captura e lançamento de uma nova exceção adiciona semântica da aplicação isolamento durabilidade 27 28 Implementando Transações Implementando Transações Propriedade auto-commit de java.sql.connection true realiza commit após cada operação executada pelo Statement ser completada (default) Métodos setautocommit(boolean autocommit) define o modo de commit commit() confirma a transação false não realiza commit automaticamente rollback() cancela a transação 29 30 5

Implementando Transações E o projeto? Exemplo de transação com JDBC Aplicacao setautocommit(false) stmt_ins = con.createstatement() con : Connection stmt_ins : Statement error = executeupdate(insertstatement) if (!error) commit() Agora podemos implementar um repositório em meio persistente! Vide o FAQ avançado! if (error) rollback() Em caso de erro, desfaça as operações. http://www.cin.ufpe.br/~scbs/ceut/ Encerre a transação e restaure o estado do auto commit. setautocommit(true) 31 32 Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br 6