Acesso a Bancos de Dados em Java (JDBC)



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

Java e Conexão com Banco de Dados

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

JDBC Acessando 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.

Programação com Acesso a Banco de Dados

Programação Orientada a Objetos JDBC Java Database Connectivity

Integrando Java com Banco de Dados

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

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.

Aula 1 Acesso a Banco de Dados

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

Acessando dados em Java com JDBC

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

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

JDBC. Java DataBase Connectivity

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

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

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

Programação Orientada a Objetos (DPADF 0063)

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

Java 2 Standard Edition Fundamentos de

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

Conectividade de Banco de Dados Java JDBC

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

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

JAVA JDBC Java Database Connectivity

(UFF) JDBC (I) TEPIS II

Desenvolvimento Web TCC Turma A-1

JDBC. Prof. Márcio Bueno

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

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

Banco de Dados. Prof. Leonardo Barreto Campos 1

Leonardo Gresta Paulino Murta

Acessando bancos de dados com o JDBC

Linguagens de Programação

JDBC Java Database Connectivity

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

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 em Rede JDBC

JPA: Persistência padronizada em Java

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

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

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

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

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

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

Acesso a banco de dados

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

Persistência de Classes em Tabelas de Banco de Dados

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

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

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

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

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

Padrões de Projeto e Persistência com DAO

Java na WEB Banco de Dados

Aula 4 JDBC - Java Database Connectivity

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

Desenvolvimento de Sistemas de Informação

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

PROTÓTIPO DE SISTEMA PARA ACESSO A BANCO DE DADOS DISTRIBUÍDOS E HETEROGÊNEOS EM REDES TCP/IP

JDBC JDBC. JDBC - Arquitetura. JDBC Arquitetura Pacote Java.sql. Java Database Connectivity JDBC PostgreSQL

CONEXÃO JAVA - BANCO DE DADOS

Tecnologias Java JDBC. Marcio Seiji Oyamada

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

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

Especialização em web com interfaces ricas

JavaServer Faces JSF

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

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

Programação SQL. Introdução

Programação Orientada a Objetos II

JDBC - Java Data Base Connectivity

Orientação a Objetos

Execução de Instruções SQL

Desenvolvimento de Aplicaçõ. ções em Java

Aplicabilidade: visão geral

C# - Conexão com MySQL

Desenvolvimento de Aplicações para Internet Aula 9

Drive MySql de conexão para Eclipse

Bancos de dados e objetos remotos

Figura 1. A Classe Java

Banco de Dados. Maurício Edgar Stivanello

Transcrição:

Acesso a Bancos de Dados em Java (JDBC) Jomi Fred Hübner Universidade Regional de Blumenau Departamento de Sistemas e Computação

Roteiro Introdução Objetivo da JDBC Vantagens Visão geral do acesso a SGBDs Drivers JDBC Conexão com o BD Envio de comandos e recebimento de resultados Informações sobre o tipo da tabela Transações

1. Introdução JDBC é uma API (Application Program Interface) para acesso a SGBD (Sistemas Gerenciadores de Banco de Dados) relacionais por meio de comandos SQL (Structured Query Language) Programa Java API JDBC SGBD

Vantagens a API para programação do sistema é a mesma para qualquer SGBD, não há necessidade de se desenvolver aplicações voltadas (e amarradas) para um BD específico permite a construção de páginas WWW que acessam BD pois dispensa a configuração da máquina cliente mantém a independência de plataforma da linguagem Java A aplicação roda em qualquer sistema operacional acessando qualquer BD!?

Visão geral A API encapsula o estabelecimento da conexão com o BD o envio de comandos SQL o processamento dos resultados Exemplo Connection con = DriverManager.getConnection ( "jdbc:odbc:sample", "login", "password"); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( "SELECT a, b, c FROM Table1"); while (rs.next()) { int x = getint("a"); String s = getstring("b"); float f = getfloat("c"); }

Comparação com Microsoft ODBC ODBC tem o mesmo propósito e existe para várias plataformas, por que não usar ODBC? Os drivers ODBC são escritos em C, o que limita a portabilidade e auto-instalação dos programas Java o ODBC tem que ser instalado e configurado na máquina do cliente imagine instalar e configurar o ODBC em 40.000.000 computadores da Internet! Entretanto, bancos de dados que utilizam ODBC podem ser utilizados em aplicações Java via a ponte JDBC-ODBC.

Modelos de acesso ao SGBD Arquitetura de duas camadas: cliente/servidor cliente servidor driver oracle aplicação Java api JDBC driver sybase ponte ODBC SQLNet TDS ODBC Oracle SyBase Access Desvantagens o driver JDBC deve ser carregado no cliente se a aplicação for um applet, o SGBD deve estar na mesma máquina que o servidor Web

Arquitetura de três camadas cliente servidor middleware aplicação Java ou applet servidor Java JDBC Dirvers RMI, CORBA, Socket, JDBC independente,... Oracle SyBase outros Dispensa o cliente de conhecer o protocolo do SGBD e, consequentemente, carregar seu driver Melhora o tempo de resposta em aplicações na Internet

2. Tipos de drivers JDBC Ponte com ODBC Acesso ao driver nativo a API JDBC chama procedimentos do driver nativo do SGBD instalado na máquina local Driver com protocolo proprietário escrito em Java a comunicação entre o cliente e a SGBD da-se no protocolo do SGBD, contudo, como o driver é escrito em Java, dispensa a instalação/configuração do driver no cliente. Driver independente de SGBD utilizado pelo cliente para conectar-se com o middleware os dois primeiros tipos são recomendados para Intranets, pois exigem configuração da máquina cliente os outros dois podem ser utilizados na Internet, preferencialmente o último, que tem menor tempo de download.

Carga do driver no programa Java Vários drivers podem ser carregados com o método Class.forName. Por exemplo: Class.forName ("oracle.jdbc.driver.oracledriver"); Class.forName ("sun.jdbc.odbc.jdbcodbcdriver"); a JVM deve poder encontrar estas classes para aplicações, a variável de ambiente CLASSPATH deve incluir os drivers para applets, o parâmetro archive deve apontar para o driver.

3. Conexão com o BD A abertura da conexão é feita pelo método getconnection, que recebe uma URL (Universal Resource Location) como argumento O DriverManager tenta conectar com o primeiro driver carregado, se não consegue, tenta o driver seguinte JDBC URLs são formadas por: um protocolo (normalmente jdbc), um sub-protocolo (normalmente é o tipo de driver) e informações para o SGBD. ponte ODBC Connection conn = DriverManager.getConnection ("jdbc:odbc:sample", "admin", "temp"); // o serviço Sample tem que estar configurado no // ODBC manager da máquina protocolo nativo com driver Java Connection conn = DriverManager.getConnection ("jdbc:mysql://host:1521/test?user=demo&password=sec");

4. Envio de comandos SQL O envio de um comando SQL é feito por meio de um Statement Um statement pode ser criado a partir de três classes: Statement é utilizado para enviar comandos SQL simples PreparedStatement o comando SQL é pré-compilado e utilizado posteriormente, sendo mais eficiente nos casos onde o mesmo comando é utilizado várias vezes CallableStatement utilizado para chamar procedimentos SQL armazenados no BD

A classe Statement Um objeto desta classe é criado pelo envio da mensagem createstatement à conexão com o BD Class.forName ("sun.jdbc.odbc.jdbcodbcdriver"); Connection conn = DriverManager.getConnection ("jdbc:odbc:sample", "admin", "temp"); Statement stmt = conn.createstatement (); Execução de comandos SQL método executequery: usado para comandos SQL que retornam uma tabela ResultSet rs = stmt.executequery("select * from EMP"); método executeupdate: usado para executar comandos SQL que alteram a tabela, retorna o número de colunas alteradas

5. Obtenção do resultado A classe ResultSet oferece à aplicação a tabela resultante de um Select e mantém um cursor posicionado em uma linha da tabela. Inicialmente este cursor está antes da primeira linha e a mensagem next() movimenta o cursos para frente. Permite à aplicação pegar os dados das colunas da linha corrente através de mensagem getxxx(<cloluna>). XXX é o tipo da coluna <coluna> é o nome da coluna ou sua posição (a partir de 1) ResultSet rs = stmt.executequery( "select a, b, c from table1"); while (rs.next()) { int x = rs.getint("a"); String s = rs.getstring(2); float f = rs.getfloat("c");

Exemplo import java.sql.*; class ExAcessoMySQLApp { public static void main (String args []) throws Exception { Class.forName ("com.mysql.jdbc.driver").newinstance(); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test"); Statement stmt = conn.createstatement(); ResultSet rset = stmt.executequery ( "select ENAME from EMP"); } while (rset.next ()) System.out.println (rset.getstring(1)); }

Meta dados de um ResultSet Permite obter informações sobre o tipo de tabela que resultou o select. Quais os nomes e os tipos das colunas Se a coluna do tipo é numérico com sinal Se a coluna pode ser alterada... ResultSet result = stmt.executequery( "SELECT * FROM TabEx ORDER BY id DESC"); ResultSetMetaData meta = result.getmetadata(); int columns = meta.getcolumncount(); for (int i=1;i<=columns;i++) { System.out.println (meta.getcolumnlabel(i) + "\t" + meta.getcolumntypename(i)); }

Criação e inserção numa tabela Exemplo de criação e inserção em uma tabela utilizando a mensagem executeupdate ao Statement. Statement st = con.createstatement(); st.executeupdate( "create table Alunos ( nome varchar (32), idade integer);"); st.executeupdate("insert into Alunos values ('Jonas',18);"); st.executeupdate( update Alunos set idade = 18 where idade = 20"); con.close();

Transações Uma transação é um conjunto de Statements que são validados no BD com commit ou cancelados com rollbabk Por default, todos os comandos no JDBC são auto-commit. con.setautocommit(false); // muda o default Statement s = con.createstatement(); try { s.executeupdate("sql statement 1"); s.executeupdate("sql statement 2"); con.commit(); // valida os 2 updates } catch (Exception e) { con.rollback(); // senão, desfaz os updates }