JDBC Acessando Banco de Dados



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

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

Programação com Acesso a Banco de Dados

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

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

Aula 1 Acesso a Banco de Dados

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

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

Integrando Java com Banco de Dados

Programação Orientada a Objetos JDBC Java Database Connectivity

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

JDBC. Java DataBase Connectivity

Conectividade de Banco de Dados Java JDBC

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

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

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

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.

Acessando dados em Java com 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

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

Programação Orientada a Objetos (DPADF 0063)

JDBC. Prof. Márcio Bueno

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

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

JAVA JDBC Java Database Connectivity

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

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

Leonardo Gresta Paulino Murta

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

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

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

(UFF) JDBC (I) TEPIS II

Persistência de Classes em Tabelas de Banco de Dados

Desenvolvimento Web TCC Turma A-1

Acesso a banco de dados

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

Acessando bancos de dados com o JDBC

JPA: Persistência padronizada em Java

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

Linguagens de Programação

Java na WEB Banco de Dados

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

Programação em Rede JDBC

Figura 1. A Classe Java

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

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

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

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

JDBC Java Database Connectivity

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

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

Padrões de Projeto e Persistência com DAO

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

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

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

Especialização em web com interfaces ricas

Noções de. Microsoft SQL Server. Microsoft SQL Server

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

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

J550 Integração com Bancos de Dados

JDBC - Java Data Base Connectivity

Banco de Dados. Prof. Leonardo Barreto Campos 1

Desenvolvimento de Aplicações para Internet Aula 9

JavaServer Faces JSF

Execução de Instruções SQL

Desenvolvimento de Sistemas de Informação

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

CURSO DE PROGRAMAÇÃO EM JAVA

Programação SQL. Introdução

Um pouco do Java. Prof. Eduardo

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

Aula 4 JDBC - Java Database Connectivity

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


Orientação a Objetos

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

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

Principais Comandos SQL Usados no MySql

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

Conectividade. Conectividade. Conectividade. Conectividade. Conectividade. Conectividade. Fernando Fonseca & Ana Carolina

Curso: Desenvolvimento Java

MANIPULAÇÃO DE BANCO DE DADOS UTILIZANDO INTERFACE GRÁFICA

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

Aplicabilidade: visão geral

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

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

Transcrição:

Acessando Banco de Dados

Objetivos Entender o que são Drivers. Diferenciar ODBC, JDBC e DRIVERMANAGER. Desenvolver uma aplicação Java para conexão com Banco de Dados. Criar um objeto a partir da classe Statement. Utilizar os métodos executeupdate e executequery da classe Statement. Saber configurar o ODBC da Microsoft para criar uma fonte de dados. Saber utilizar os métodos da Classe DataBaseMetaData. Saber utilizar os métodos da Classe ResultSetMetaData. Saber criar as Prepared Statement. Entender e aplicar o conceito de Transação.

O que é? JDBC é uma interface baseada em Java para acesso a bancos de dados através de SQL. Pacote Java padrão: java.sql Baseada em ODBC Um driver JDBC nada mais é que um tradutor utilizado pela JVM (Java Virtual Machine) para converter instruções no padrão JDBC (usadas no código do programa) para instruções específicas do Banco de Dados. A maioria dos bancos de dados, em uso atualmente, possuem drivers implementados ou o u pelo próprio fabricante ou por terceiros. Caso não exista ainda um driver JDBC, pode-se usar o padrão ODBC para comunicação com o banco. Nesta situação, teremos no entanto, uma perda de performance na comunicação. A própria SUN disponibiliza na API JDBC, o driver para comunicação via ODBC.

O que é? JDBC é uma interface de nível de código Código SQL é usado explicitamente dentro do código Java O pacote java.sql consiste de um conjunto de classes e interfaces que permitem embutir código SQL em métodos. Com JDBC é possível construir uma aplicação Java para acesso a qualquer banco de dados SQL. O banco deve ter pelo menos um driver ODBC, se não tiver driver JDBC Para usar JDBC é preciso ter um driver JDBC O J2SE distribui um driver ODBC que permite o acesso a bancos que não suportam JDBC mas suportam ODBC

O pacote java.sql.* JDBC

O que é um driver? Driver é um tipo de software que tem por finalidade permitir a comunicação entre dois sistemas. Os drivers geralmente são desenvolvidos e fornecidos pelos fabricantes, mas é comum encontrar drivers genéricos distribuídos com o sistema operacional e também drivers de terceiros, gratuitos ou não. O que se espera de um driver é a máxima compatibilidade e velocidade sem degradar a performance do sistema como um todo.

O que é ODBC? Open Database Connectivity. É uma interface desenvolvida pela Microsoft para permitir acesso genérico a diferentes sistemas de banco de dados na plataforma Windows, com grande disponibilidade de drivers para acesso a banco de dados.

O que é JDBC? Java Database Connectivity. É uma interface que possibilita às aplicações Java acessarem banco de dados relacionais e arquivos de dados.

O que é ponte JDBC-ODBC? Embora uma aplicação escrita em Java possa utilizar diretamente a interface ODBC para acessar banco de dados, este procedimento é trabalhoso e elimina a portabilidade da aplicação. Para superar este obstáculo, usamos uma ponte JDBC-ODBC. Não precisamos nos preocupar com a instalação do JDBC ou da ponte JDBC-ODBC. Na plataforma Java 2, essas interfaces fazem parte do pacote e são instaladas juntamente com o SDK 1.X em diante.

Resumindo: Tipos de Driver JDBC

Driver Manager O DriverManager é uma classe do pacote java.sql e serve para: Fazer a conexão com o Banco de Dados Gerenciar o conjunto de Drivers JDBC correspondentes Controlar o Login ao Banco (se houver) Controlar as mensagens entre o banco de dados e o driver. Um programador que utiliza um driver, não precisa saber como ele foi codificado, mas deve saber como carregá-lo para que ele se registre no DriverManager.

Carga de Drivers Para executar a ponte JDBC:ODBC, basta executar a instrução: Class.forName( sun.jdbc.odbc.jdbcodbcdriver ); Esta linha chama o método estático forname( ) da classe Class e carrega para a memória, o driver indicado, no caso o JdbcOdbcDriver. Dentro do driver, existe um bloco estático de código que cria uma instância da própria classe e a registra junto ao DriverManager com o método registerdriver( ). A instrução: DriverManager.registerDriver(new sun.jdbc.odbc.jdbcodbcdriver()); colocada em nosso código, teria efeito semelhante, porém teríamos duas instâncias da classe JdbcOdbcDriver criadas. Class.forName( oracle.jdbc.driver.oracledriver )

Conectando O comando Connection con = DriverManager.getConnection( jdbc:odbc:nomebanco, LoginBanco, SenhaBanco ); pede que o DriverManager, através de um driver carregado anteriormente, estabeleça uma conexão com o banco. Devemos observar a URL JDBC informada: jdbc:<subprotocolo>:<dsn> Exemplos: jdbc:odbc:anuncios jdbc:oracle:thin:@200.206.192.216:1521:exemplo jdbc:mysql://alnitak.orion.org/clientes jdbc:cloudscape:rmi://host:1098/mydb;create=true

Conectando no Oracle Strings de conexão do oracle Thin Driver (Tipo 4 100%) url= jdbc:oracle:thin@ + Host + : + porta + : + instancia ; Connection con=drivermanager.getconnection(url, login, senha ); OCI Driver (Net8) (Tipo 2) Connection conn = DriverManager.getConnection ("jdbc:oracle:oci8:@hostname_orcl", "scott", "tiger"); // or oci7 @TNSNames_Entry, userid, password

Criando um Statement Statement é o objeto que envia os comandos SQL para o banco de dados. Statement stmt = con.createstatement( ); Este objeto, como dissemos, será responsável para enviar comandos SQL para o banco de dados. A classe Statement possui dois métodos para enviar comandos para o banco: executequery( ) - Utilizado para enviar comandos que retornam dados de tabelas executeupdate( ) - Utilizado para enviar comandos que criam, alteram a estrutura ou apagam tabelas ou registros dentro das tabelas

Comando executeupdate(); Retorna o número de linhas alteradas CRIANDO TABELAS NO BANCO DE DADOS stmt.executeupdate( CREATE TABLE aluno + (nome VARCHAR(32),idade INTEGER, mensalidade FLOAT) ); Esta instrução cria uma tabela de nome aluno, com os campos nome, idade e mensalidade. INSERINDO DADOS EM UMA TABELA DO BANCO DE DADOS stmt.executeupdate( INSERT INTO aluno + VALUES ( Joao, 49, 500.00) ); ALTERANDO O CONTEÚDO DE TABELAS stmt.executeupdate( UPDATE aluno + SET mensalidade = 750.00 + WHERE nome = Joao ); APAGAR TABELAS stmt.executeupdate( drop table aluno );

Comando executequery(); Este comando é utilizado para recuperar informações de tabelas. O resultado em um objeto do tipo ResultSet: ResultSet rs = stmt.executequery( SELECT * FROM aluno ); while(rs.next()) { String nome = rs.getstring(1); int idade = rs.getint(2); double mensalidade = rs.getdouble( mensalidade );

ResultSet - Gets Existe um método get para cada tipo:

Resumo até aqui 1) Importar o pacote java.sql 2) Criar um objeto do tipo Connection que é uma interface que gerencia a conexão entre o programa e o banco de dados. Também fornece suporte para execução de instruções SQL. 3) Criar a URL (Uniform Resource Locator) que especifica o banco de dados ao qual a aplicação se conecta, utilizando a ponte JDBC:ODBC para conectar a um banco de dados da Microsoft. 4) Informar o nome do usuário que se conectará ao banco e a senha. 5) Carregar o Driver para a memória, a fim de permitir a conexão ao banco de dados. 6) Criar uma conexão com o Banco de Dados 7) Dependendo da aplicação, criar as Statements, ResultSet, PreparedStatement etc...

Exemplo import java.io.*; import java.sql.*; import java.util.*; public class TestaOdbcBasico extends Object { public static void main(string args[]) { String URL = jdbc:odbc:teste String username = ; String password = ; try { Class.forName( sun.jdbc.odbc.jdbcodbcdriver ); System.out.println( Driver carregado ); Catch (Exception e) { System.out.println( Erro na Carga do Driver ); System.exit(0);

Exemplo (cont.) Statement stmt = null; Connection con = null; try { con = DriverManager.getConnection ( URL,username,password); System.out.println( Conexão criada ); stmt = con.createstatement(); System.out.println( Statement Criado ); catch (Exception e) { System.out.println( Problemas com a Conexão com o Banco); try { stmt.executeupdate( CREATE TABLE aluno (nome VARCHAR(32),idade INTEGER, mensalidade FLOAT) ); JDBC stmt.executeupdate("insert INTO aluno (nome,idade,mensalidade) " + "VALUES ('Joao', 5, 600.00)");

Exemplo (cont.) JDBC stmt.executeupdate("update aluno SET mensalidade = 750.00 WHERE nome = 'Joao'"); ResultSet rs = stmt.executequery( SELECT * FROM aluno ); while(rs.next()) { String nome = rs.getstring( nome ); int idade = rs.getint( idade ); double mensalidade = rs.getdouble( mensalidade ); System.out.println( Nome: +nome+ \tidade: con.close(); catch (Exception e) { +idade+ \tmensalidade: +mensalidade); System.err.println( Problemas com SQL: +e.getmessage());

Transações Permite a execução atômica de comandos enviados ao banco. Implementada através dos métodos de Connection commit() rollback() setautocommit(boolean autocommit): default é true. Por default, as informações são processadas a medida em que são recebidas. Para mudar: con.setautocommit(false); Agora várias instruções podem ser acumuladas. Para processar: con.commit(); JDBC Se houver algum erro e todo o processo necessitar ser desfeito, pode-se emitir um ROLLBACK usando: con.rollback();

Exercício 31 1) Atualize o programa TestaBanco de forma que: 1) Ao informar um cliente, o programa verificará se este cliente existe na base de dados (Tabela Cliente). Caso não exista, crie o cliente na base, caso contrário, recupere os dados do cliente. 2) Verifique se existe uma conta para este cliente na base de dados (Tabela Conta). Caso não exista, crie a conta do cliente na base, caso contrário, recupere os dados da conta do cliente. 3) Efetue três saques de: R$ 150,00, R$ 50,00 e R$ 350,00. 4) Ao final da movimentação, apresente o saldo da conta do cliente

Informações do Banco de Dados Podemos obter informações sobre o Banco de Dados sendo utilizado, com o auxílio da classe DataBaseMetaData. JDBC import java.sql.*; import java.util.*; public class TestaDataBaseMetaData extends Object { public static void main(string args[]) { String URL = jdbc:odbc:testeodbc ; String username = ; String password = ; try { Class.forName( sun.jdbc.odbc.jdbcodbcdriver ); System.out.println( Driver Carregado com sucesso ); catch (Exception e) { Connection con = null; ResultSet rs = null; DatabaseMetaData md = null;

Informações do Banco de Dados (cont.) try { con = DriverManager.getConnection(URL,username,password); System.out.println( Conexão criada com Sucesso!! ); md = con.getmetadata(); if(md == null) { System.out.println( No Database Meta Data ); else { System.out.println( Nome do Banco : + md.getdatabaseproductname()); System.out.println( Maximo numero de conexoes : + md.getmaxconnections()); System.out.println( Versao do Driver : + md.getdriverversion()); System.out.println( Versao do Banco : + md.getdatabaseproductversion()); System.out.println( Stored Procedures : + md.supportsstoredprocedures());

Informações do Banco de Dados (cont.) catch (Exception e) { System.out.println( Problemas na conexao com o banco ); System.out.println( Schemas do Banco ); try { rs = md.getschemas(); while (rs.next()) { System.out.println(rs.getString(1)); catch (Exception exc) { System.out.println( Schemas Falha ); System.out.println( Catalogs ); try { rs = md.getcatalogs(); while (rs.next()) { System.out.println(rs.getString(1)); catch (Exception exc) { System.out.println( Catalogs Falha ); JDBC

Informações do Banco de Dados (cont.) System.out.println( Tabelas ); String nome; String[] tipos = { TABLE, VIEW ; try { rs = md.gettables(null,null, %,tipos); while (rs.next()) { nome = rs.getstring(3); System.out.println(nome+ - +rs.getstring(4)); catch (Exception exc) { System.out.println( Tables Falha );

Informações do ResultSet ( ) ResultSetMetaData meta = result.getmetadata(); int columns = meta.getcolumncount(); for (int i=1;i<=columns;i++) { System.out.print(meta.getColumnLabel(i) + ( + meta.getcolumntypename(i) + ) + \t\t ); ( )

Prepared Statements (Instruções Preparadas) Quando queremos enviar um comando repetidas vezes para o banco de dados, podemos simplificar o processo e otimizar a performance com a classe PreparedStatement. JDBC A idéia é preparar uma Query parametrizada que será enviada para o Servidor, sendo pré compilada antes de ser usada. Tudo vai depender de como o banco lida com as Queries précompiladas. prep = con.preparestatement( INSERT into aluno +"(nome,idade,mensalidade)" + VALUES (?,?,?)); prep.setstring(1, Joao ); prep.setint(2,5); prep.setdouble(3,650.00); prep.executeupdate();

Verifique seu progresso: Entender o que são Drivers. Diferenciar ODBC, JDBC e DRIVERMANAGER. Desenvolver uma aplicação Java para conexão com Banco de Dados. Criar um objeto a partir da classe Statement. Utilizar os métodos executeupdate e executequery da classe Statement. Saber configurar o ODBC da Microsoft para criar uma fonte de dados. Saber utilizar os métodos da Classe DataBaseMetaData. Saber utilizar os métodos da Classe ResultSetMetaData. Saber criar as Prepared Statement. Entender e aplicar o conceito de Transação. JDBC