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



Documentos relacionados
Acesso a Bancos de Dados em Java (JDBC)

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

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

JAVA JDBC Java Database Connectivity

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

Programação Orientada a Objetos JDBC Java Database Connectivity

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.

Integrando Java com Banco de Dados

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

Aula 1 Acesso a Banco de Dados

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

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

JDBC Acessando Banco de Dados

Java e Conexão com Banco de Dados

Programação com Acesso a Banco de Dados

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

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

Acessando dados em Java com JDBC

Linguagens de Programação

(UFF) JDBC (I) TEPIS II

Conectividade de Banco de Dados Java JDBC

Java 2 Standard Edition Fundamentos de

JPA: Persistência padronizada em Java

Programação em Rede JDBC

JDBC. Prof. Márcio Bueno

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

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

Padrões de Projeto e Persistência com DAO

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

Desenvolvimento de Sistemas de Informação

Leonardo Gresta Paulino Murta

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

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

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

Desenvolvimento Web TCC Turma A-1

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

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

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. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Programação Orientada a Objetos (DPADF 0063)

Acesso a banco de dados

JDBC Tópicos avançados de acesso a base de dados relacional

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

Aula 4 JDBC - Java Database Connectivity

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

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

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

JDBC DRIVER. Objetivo: Possibilitar aplicações não Zim de se conectar a um banco de dados Zim utilizando as normas JDBC.

Especialização em web com interfaces ricas

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

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

JDBC - Java Data Base Connectivity

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

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

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

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

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

CONEXÃO JAVA - BANCO DE DADOS

Java na WEB Banco de Dados

Exercícios de fixação: Listas

Figura 1. A Classe Java

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

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

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

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

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Tecnologias Java JDBC. Marcio Seiji Oyamada

Introdução Conceitos Iniciais Metodologia Web Services Considerações Finais. Introdução. Conceitos Iniciais Metodologia

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

Persistência de Classes em Tabelas de Banco de Dados

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

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

Programação Orientada a Objetos II

Acessando bancos de dados com o JDBC

Drive MySql de conexão para Eclipse

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

Aplicabilidade: visão geral

Como criar um banco de dados usando o mysql

Banco de Dados. Prof. Leonardo Barreto Campos 1

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

Programação Orientada a Objetos II

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Prof. Marcelo Heitor Teixeira marceloheitor.com. Java API JDBC

As 10 Áreas da Engenharia de Software, Conforme o SWEBOK. Jorge H C Fernandes 2004

Transcrição:

XV Simpósio Brasileiro de Bancos de Dados 2-6 de Outubro de 2000 João Pessoa - Paraíba, Brasil Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte

Conteúdo Referências Introdução O Modelo Computacional Um Exemplo Simples Elementos da API JDBC 1.0 Aspectos Avançados da API JDBC Exemplo de Sistema Three-Tier

Referências JDBC TM - Connecting Java and Databases. Sun Microsystems, 1996 JDBC Database Access, by Maydene Fisher (Java Tutorial, Sun Microsystems, 1999) JDBC Home Page http://java.sun.com/products/jdbc

JDBC TM : Introdução JDBC Facilita a integração entre programas Java e SGBDs Relacionais Suporta a execução de comandos SQL através de uma API definida em Java. Call Level Interface Pacote java.sql, integrado ao núcleo do JDK TM Aplicações, Applets, Servlets ou quaisquer outros programas Java podem: Estabelecer conexão com base de dados Enviar comandos SQL Processar resultados

Modelo Computacional Cliente getconn() Aplicação createstmt() next(); next();next(); get*( Col-n ); get*(n); execquery() execupdate() Col-1 Col-2... Col-n Conn Stmt ResultSet Servidor SGBD Relacional Bases de Dados DriverMngr JDBC API Java CORE APIs Driver A B C

JDBC 1.0 Um Exemplo Simples

import java.sql.*; public class Select { static { Um try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Exemplo Simples} catch ( ClassNotFoundException cnfe) { System.out.print(cnfe.toString()); } } public static void main(string[] args) { try { Connection conn = DriverManager.getConnection( "jdbc:odbc:banco_de_java", user", password"); Statement stmt = conn.createstatement(); ResultSet rs = stmt.executequery("select numero, saldo FROM contas"); System.out.println("Resultados da consulta"); while (rs.next()) { String numero = rs.getstring(1); int saldo = rs.getint(2); System.out.println(" Conta Bancária número:["+numero+"] Saldo:["+saldo+"]"); } stmt.close(); conn.close(); } catch (SQLException ex) { ex.printstacktrace(); } System.exit(0); } }

Principais Elementos da API JDBC Usados no Exemplo Carregar Driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Estabelecer Connection Connection connection = DriverManager.getConnection( "jdbc:odbc:bancodejava" /*JDBC URL*/,"jorge","jhcf"); Criar Statement Statement statement = connection.createstatement(); Executar Queries ResultStatement result = statement.executequery( "SELECT * FROM contas WHERE numero =\'1\' ); Executar Updates statement.executeupdate( "UPDATE contas SET saldo = 100 WHERE numero = \'1\'"); Fechar Statement e Connection statement.close(); connection.close();

JDBC 1.0: pacote java.sql Interfaces Driver Connection DatabaseMetaData ResultSet ResultSetMetaData Statement PreparedStatement CallableStatement Classes java.util.date Date Time Timestamp DriverManager DriverPropertyInfo Types Exceções SQLException SQLWarning DataTruncation

Classes do Exemplo Driver DriverManager Connection Statement ResultSet SQLException

Driver (interface) Cria uma instância e registra-se junto ao DriverManager quando a classe é carregada Conecta-se a um tipo de SGBD específico Principais Métodos boolean acceptsurl(string) Connection connect(string, Properties) boolean jdbccompliant()

Java, JDBC e JDBC Drivers Aplicação Java JDBC DriverManager JDBC Net Driver Protocolo Middleware JDBC JDBC-ODBC Bridge Driver ou Native API-Partly Java Driver ODBC & DB Drivers Protocolo ODBC e/ou Proprietário Native Protocol Pure Java Driver Protocolo Proprietário JDBC Connector SGBD Relacional A B C

Categorias de Drivers para JDBC 1 - JDBC-ODBC Bridge plus ODBC driver ALL JAVA? No; Protocolo: Direct 2 - Native API partly-java driver ALL JAVA? No; Protocolo: Direct 3 - JDBC-Net pure Java Driver ALL JAVA? Yes ; Protocolo: Requer Connector 4 - Native protocol pure Java Driver ALL JAVA? Yes; Protocolo: Direct

DriverManager (classe) Gerencia um conjunto de drivers JDBC disponíveis. Testa qual deles é mais apropriado para uma dada conexão Busca o nome dos drivers para carga na propriedade jdbc.drivers da classe System. Ex: jdbc.drivers=sun.jdbc.odbc.jdbcodbcdriver:wombat.sql.driver Principais Métodos Connection getconnection(string, String, String) registerdriver(driver) get(set)logintimeout(int) get(set)logstream(printstream)

Connection (interface) Representa uma sessão junto a uma base de dados específica Gerencia a execução de comandos (Statement) e o retorno de resultados (ResultSet) Por default, realiza um commit após a execução de cada Statement. Principais Métodos Statement createstatement(); close(), commit(), rooback(), setautocommit(boolean b) DatabaseMetaData getmetadata(); PreparedStatement preparestatement(string sql); CallableStatement preparecall(string sql);

Statement Executa comandos estáticos SQL A cada momento, apenas um ResultSet por Statement Principais Métodos ResultSet executequery(string sql) SQL statement SELECT int executeupdate(string sql) SQL statement INSERT, UPDATE ou DELETE close(); cancel(); get(set)maxrows(); get(set)maxfieldsize();

ResultSet Tabela de dados gerada pela execução de um comando executequery() Linhas são acessadas seqüencialmente - next(); Colunas são acessadas em qualquer ordem métodos getxxx(int collumnindex String collname) * getboolean(), _Byte(), _Int(), _Float(), _Double(), Long(), Short(), String() byte[] getbytes() java.lang.bigdecimal getbigdecimal(); InputStream getbinarystream() getmetadata();

SQLException Informação sobre erro no acesso à base de dados String descrevendo o erro getmessage() SQLState - String no Padrão XOPEN SQL getsqlstate() Código de erro específico do fabricante geterrorcode() Link para próxima exceção, contendo informação adicional getnextexception()

Banco de Java em JDBC

Arquitetura do Sistema client.x.br Controle da Aplicacao server.dimap.ufrn.br Oracle:1721 createconta(...); getconta(...); setconta(...); ContaBancaria BancoJDBC ContaBancaria Banco_de_Java CONTAS NUMERO SALDO 1 500 2-800 TCP/IP

Funcionamento do Sistema BancoJDBC Cliente Cliente (Applet/Servlet/Aplicação) next(); BancoJDBC getint( saldo ); execquery() getconn() execupdate() createstmt() numero saldo...... Conn Stmt ResultSet Server SGBD Relacional Bases de Dados DriverMngr JDBC API Java CORE APIs Driver A B C

O Banco de Java e JDBC package BancoJDBC; import java.sql.*; import model.*; public class BancoJDBC { static {...try {}} private String urlbancodedados = "jdbc:oracle:thin:@server.dimap.ufrn.br:1721:banco_de_java"; private String nomeusuario = "jorge"; private String senhausuario = "jhcf"; private Connection conn; private Statement stmt;...

O Banco de Java e JDBC (Continuação) public BancoJDBC() {...} public void closeconnection() {...} public ContaBancaria getconta(string numeroconta) {...} private ContaBancaria getcontasql(string numeroconta) {...} public boolean setconta(contabancaria conta) {...} private void setcontasql(contabancaria conta) {...} public ContaBancaria createconta(string numeroconta) {...} private ContaBancaria createcontasql(string numeroconta) {...}

public BancoJDBC() public BancoJDBC() throws FalhaDeComunicacaoException { try { conn = DriverManager.getConnection(urlBancoDeDados, nomeusuario, senhausuario); stmt = conn.createstatement(); stmt.getclass(); } catch (SQLException sqle) { throw new FalhaDeComunicacaoException(sqle); } }

public void closeconnection() public void closeconnection() throws FalhaDeComunicacaoException { try { stmt.close(); conn.close(); } catch (SQLException sqle) { throw new FalhaDeComunicacaoException(sqle); } }

public ContaBancaria getconta(string numeroconta) public ContaBancaria getconta(string numeroconta) throws ContaNaoExistenteException, FalhaDeComunicacaoException { ContaBancaria conta = null; try { conta = getcontasql(numeroconta); return conta; } catch (SQLException sqle) { throw new FalhaDeComunicacaoException(sqle); } }

private ContaBancaria getcontasql(string numeroconta) private ContaBancaria getcontasql(string numeroconta) throws SQLException, ContaNaoExistenteException { String comando = "SELECT * FROM contas "+ "WHERE numero = \'"+numeroconta+"\'"; ResultSet query = stmt.executequery(comando); if (query.next()) { ContaBancaria conta = new ContaBancaria(query.getString("numero")); conta.setsaldoanterior(query.getint("saldo")); return conta; } else { throw new ContaNaoExistenteException(numeroConta); } }

public boolean setconta(contabancaria conta) public boolean setconta(contabancaria conta) throws FalhaDeComunicacaoException { this.setcontasql(conta); }

private void setcontasql(contabancaria conta) private void setcontasql(contabancaria conta) throws FalhaDeComunicacaoException { try { stmt.executeupdate("update contas SET saldo = "+ conta.getsaldoatual()+ " WHERE numero = \'"+conta.getnumero()+"\'"); } catch (SQLException sqle) { throw new FalhaDeComunicacaoException(sqle); } }

public ContaBancaria criaconta(string numeroconta) public ContaBancaria createconta(string numeroconta) throws ContaExistenteException, FalhaDeComunicacaoException { try { return this.createcontasql(numeroconta); } catch (SQLException sqle) { throw new FalhaDeComunicacaoException(sqle); } }

Arquiteturas Multi-Camadas com JDBC, RMI, EJBs, Servlets, Applets e Browsers

Arquiteturas Two-Tier e Three-Tier com JDBC Two-Tier (Duas Camadas) Three-Tier (Três Camadas) Aplicação/Applet Java Cliente Cliente Aplicação/Applet Java, HTML Browser java.sql java.rmi, java.net ou java.idl HTTP, RMI ou CORBA Middleware JDBC, ODBC ou Proprietário Servidor de Aplicação Servidor de SGBD SGBD Relacional A B C Business Objects java.sql Middleware JDBC, ODBC ou Proprietário

Arquiteturas Multi-Camadas com RMI Two-Tier Cliente Java Aplicação/Applet Middleware RMI java.rmi java.rmi Objetos Distribuídos Three-Tier Cliente Java Aplicação/Applet Middleware RMI java.rmi java.rmi Objetos Distribuídos java.sql Three-Tier (Três Camadas) Aplicação/Applet Java, HTML Browser HTTP Servlets java.net javax.servlet java.rmi SGBD Relacional A B C

Arquiteturas Multi-Camadas com Servlets Two-Tier Cliente Java Aplicação/Applet, HTML Browser java.net Middleware HTTP Servlets java.servlet Three-Tier Cliente Java Aplicação/Applet, HTML Browser java.net Middleware HTTP Servlets javax.servlet java.sql HTTP Servlets N-Tier Cliente Java Aplicação/Applet, HTML Browser java.net javax.servlet java.net, javax.servlet SGBD Relacional A B C

Arquiteturas Multi-Camadas com Enterprise Java Beans (EJBs) Two-Tier Cliente Java Aplicação/Applet, java.rmi, javax.jndi Middleware RMI, JNDI EJBs javax.ejb N-Tier Cliente Java Aplicação/Applet java.rmi, javax.jndi Middleware RMI, JNDI javax.ejb EJBs java.rmi, javax.jndi java.sql HTTP Servlets N-Tier Cliente Java Aplicação/Applet, HTML Browser java.net javax.servlet java.rmi, javax.jndi SGBD Relacional A B C

Criar uma pequena aplicação na Web com HTML + Servlets + JDBC

Como Capturar Dados neste Formulário HTML...

E Mostrar Dados Consolidados em uma Página HTML!

Unindo Servlets e JDBC Host #1 Web Browser GET Survey.html POST surveyinsert Host #2 Servletrunner/HTTP Server SurveyInsert Survey.html SurveyQuery GET surveyquery Host #3 JDBC-ODBC Bridge Driver ou Native API-Partly Java Driver Local ODBC Configuration ODBC Connector Surveys survey1 employee comments...

O Futuro de JDBC

O Futuro de JDBC TM JDBC 1.0 (JDK 1.1) JDBC 2.0 (JDK 1.2) JDBC Standard Extensions Heavy-duty DB Computing SQL3 types Scrollable cursors programatic and batch updates Fundamental p/ Enterprise JavaBeans

Aspectos Avançados de JDBC 2.0 - Batch Updates Extraído de Jguru.com try { dbcon.setautocommit(false); Statement stmt= dbcon.createstatement(); stmt.addbatch("insert INTO bugs "+ "VALUES (1007, 'Server stack overflow', 1,2,{d '1999-01-01'})"); stmt.addbatch("insert INTO bugs "+ "VALUES (1008,'Cannot load DLL', 3,1,{d '1999-01-01'})"); stmt.addbatch("insert INTO bugs "+ "VALUES (1009,'Applet locks up',2,2,{d '1999-01-01'})"); int[] updcnt = stmt.executebatch(); dbcon.commit(); } catch (BatchUpdateException be) { //handle batch update exception int[] counts = be.getupdatecounts(); for (int i=0; I counts.length; i++) { System.out.println("Statement["+i+"] :"+counts[i]); } dbcon.rollback(); } catch (SQLException e) { //handle SQL exception dbcon.rollback(); }

Outras Referências Servlets Introduction to SQL Language http://w3.one.net/~jhoffman/sqltut.htm Jguru FAQ http://www.jguru.com/jguru/faq/printablefaq.jsp?faq=jdbc

Próximos Passos JDBC Tutorial da Sun Microsystems JDBC Guide Jguru FAQ Connection Pool Aspectos Avançados da JDBC 2.0

XV Simpósio Brasileiro de Bancos de Dados 2-6 de Outubro de 2000 João Pessoa - Paraíba, Brasil Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte