Java Acesso a Banco de Dados Prof. Marcos André Pisching, M.Sc.

Slides:



Advertisements
Apresentações semelhantes
Ana Paula B. Barboza Ivana Xavier Rodrigues
Advertisements

Banco de Dados Prof. Antonio.
JDBC Java Dababase Connectivity Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.
Tecnologia de Programação BD em.Net: Conexão com SQL Server 1º Semestre 2009 > PUCPR > BSI Bruno C. de Paula.
Prof. Alessandro J. de Souza
Prof.: Bruno Rafael de Oliveira Rodrigues
Java Conexão com Banco de Dados
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique
Sistemas de Informação Redes de Computadores
setWrapStyleWord() configura o estilo de quebra de linha setLineWrap(true) indica mudança automática de linha A linha 68 registra o objeto resultTable.
28.5 Instruções para instalar o MySQL e o MySQL Conector/J
Maurício Edgar Stivanello
Linguagens de Programação Orientadas a Objetos
Sumário 1 Processamento de Consultas 2 Introdução a Transações
Módulo I Interface com BancoDados JDBC
Introdução à Engenharia da Computação
Material III-Bimestre Wagner Santos C. de Jesus
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
Java & Bancos de Dados Universidade Salgado de Oliveira Goiânia
Java :: Persistência de Dados
Acesso a Base de Dados JDBC Trabalho Realizado por:
Arquitetura e Linguagens
Conexão com Bancos de Dados Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.
Conceitos de SGBD Objeto-Relacional Oracle 10g [2]
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Integração com Banco de Dados
Design Patterns / Acesso ao banco de dados (java.sql)
Programação Orientada a objetos II
Anexo A. JDBC  Conjunto de interfaces e classes java que faz envio de consultas para um banco de dados.  Objetos(tipos)  Conexão (Driver e Connection)
JSP / Servlets Avançado
P ROGRAMAÇÃO Prof.: Bruno Rafael de Oliveira Rodrigues.
Programação Orientada à Objetos
JDBC Java Database Connectivity. JDBC Especificação para uso de base de dados em aplicações e applets JAVA; API para uso de drivers JDBC; Compatível com.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – Ceça.
Curso Programação – JAVA Centro de Formação São Domingos
Programação Orientada à Objetos
Configuração do Ambiente de programação
A Linguagem PHP Instituto Vianna Júnior Desenvolvimento para Web Prof. Lúcia Helena de Magalhães 2008.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
SQL- Structured Query Language  SQL é uma linguagem de comandos para interagir com uma BD relacional (não é case-sensitive).  A linguagem Java permite.
SQLite Banco de Dados II.
CURSO JAVA BÁSICO Módulo JDBC – slide 1 MóduloJDBC.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
JDBC Java Database Connectivity docs/guide/jdbc/getstart/introTOC.doc.html.
Conceitos básicos Professor Esp. Diego André Sant’Ana
J AVA D ATABASE C ONNECTIVITY JDBC. JDBC O Java Database Connectivity (JDBC) API é o padrão da indústria para que aplicações Java acessem bancos de dados.
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
VBA – Visual Basic para Aplicativos
Acesso a Banco de Dados com JDBC e DAO
Desenvolvimento WEB II Aula 3 – Conexão com o Banco de Dados
Acessando banco de dados com JAVA.  Linguagem independente de plataforma; ◦ “Write once, run anywhere” ◦ JVM  Java Virtual Machine  Mecanismo que permite.
Acesso a Banco de Dados com o JDBC Prof. M.Sc. Ronnison Reges Vidal.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
Trabalho Prático de Programação Orientada a Objetos em Java Programação Orientada a Objetos Ludimila Monjardim Casagrande 2011.
V Seminário RSJUG Confraria do Java JavaDB Um Banco de Dados 100% Java Profa. Me. Karen Selbach Borges.
JavaServer Faces – JSF Fernando Freitas Costa Bacharel em Sistemas de Informação Especialista em Gestão e Docência Universitária blog.fimes.edu.br/fernando.
Persistência de dados e padrão DAO
Banco de Dados Marcio Ferreira da Silva. PHP e Banco de Dados Uma das facilidades do PHP é na utilização dos bancos de dados. O MySQL é um banco de dados.
Banco de Dados Relacionais. Tabelas DB Relacionais são baseados em tabelas As tabelas armazenam registros Cada registro ocupa uma linha da tabela Registros.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Prof.: Jean Carlo Mendes
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Acesso a Banco de dados com JDBC
Transcrição da apresentação:

Java Acesso a Banco de Dados Prof. Marcos André Pisching, M.Sc.

Banco de Dados Siglas:  JDBC – Java Database Connectivity  ODBC – Open Database Connectivity  SQL – Structured Query Language DDL – data definition language DML – data manipulation language Prof. Marcos André Pisching, M.Sc. 2

Banco de Dados Programa Java Driver JDBC Servidor de Banco de dados Tabelas de Banco de dados Prof. Marcos André Pisching, M.Sc. 3

JDBC

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 Usando JDBC, pode-se obter acesso direto a bancos de dados através de applets e outras aplicações Java Nesta parte é apresentada uma introdução superficial do JDBC mas suficiente para integrar aplicações Java com bancos de dados relacionais que possuam drivers JDBC Prof. Marcos André Pisching, M.Sc. 5

JDBC 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 JSE distribui um driver ODBC que permite o acesso a bancos que não suportam JDBC mas suportam ODBC Prof. Marcos André Pisching, M.Sc. 6

Pacote java.sql Prof. Marcos André Pisching, M.Sc. 7

Tipos de Drivers JDBC Tipo 1: ponte ODBC-JDBC  Usam uma ponte para ter acesso a um banco de dados. Este tipo de solução requer a instalação de software do lado do cliente. Tipo 2: solução com código nativo  Usam uma API nativa. Esses drivers contém métodos Java implementados em C ou C++. Requer software no cliente. Tipo 3: solução 100% Java no cliente  Oferecem uma API de rede via middleware que traduz requisições para API do driver desejado. Não requer software no cliente. Tipo 4: solução 100% Java  Drivers que se comunicam diretamente com o banco de dados usando soquetes de rede. É uma solução puro Java. Não requer código adicional do lado do cliente. Prof. Marcos André Pisching, M.Sc. 8

JDBC Prof. Marcos André Pisching, M.Sc. 9 JDBC-ODBC Bridge Solução com código nativo

JDBC Prof. Marcos André Pisching, M.Sc. 10 Solução 100% Java Solução 100% Java no cliente Database Middleware

Arquitetura JDBC Prof. Marcos André Pisching, M.Sc. 11

URL JDBC Uma aplicação JDBC pode carregar ao mesmo tempo diversos drivers. Para determinar qual driver será usado usa-se uma URL: jdbc: :  A aplicação usa o subprotocolo para identificar e selecionar o driver a ser instanciado.  O dsn é o nome que o subprotocolo utilizará para localizar um determinado servidor ou base de dados.  Sintaxe dependente do fabricante. Exemplos: jdbc:odbc:anuncios jdbc:mysql://alnitak.orion.org/clientes jdbc:cloudscape:rmi://host:1098/MyDB;create=true Prof. Marcos André Pisching, M.Sc. 12

DriverManager e Driver A interface Driver é utilizada apenas pelas implementações de drivers JDBC  É preciso carregar a classe do driver na aplicação que irá utilizálo. Isto pode ser feito com Class.forName(): Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); A classe DriverManager manipula objetos do tipo Driver.  Possui métodos para registrar drivers, removê-los ou listá-los.  É usado para retornar Connection, que representa uma conexão a um banco de dados, a partir de uma URL JDBC recebida como parâmetro Connection con = DriverManager.getConnection ("jdbc:odbc:dados","nome","senha"); Prof. Marcos André Pisching, M.Sc. 13

Connection, ResultSet e Statement Interfaces que contém métodos implementados em todos os drivers JDBC.  Connection Representa uma conexão ao banco de dados, que é retornada pelo DriverManager na forma de um objeto.  Statement Oferece meios de passar instruções SQL para o sistema de bancos de dados.  ResultSet É um cursor para os dados recebidos. Prof. Marcos André Pisching, M.Sc. 14

Statement Obtendo-se um objeto Connection, chama-se sobre ele o método createStatement() para obter um objeto do tipo Statement: Statement stmt = con.createStatement() que poderá usar métodos como execute(), executeQuery(), executeBatch() e executeUpdate() para enviar instruções SQL ao BD. Subinterfaces:  PreparedStatement e CallableStatement PreparedStatement pstmt = con.prepareStatement(...); CallableStatement cstmt = con.prepareCall(...); Prof. Marcos André Pisching, M.Sc. 15

Enviando instruções Exemplo de uso de Statement stmt.execute("CREATE TABLE filme " + "(codigo INT PRIMARY KEY, " + "genero CHAR(20), " + “titulo CHAR(20));"); int linhasModificadas = stmt.executeUpdate("INSERT INTO filme " + "(codigo, genero, titulo) VALUES " + "(499,‘Aventura',‘Frio de Lages')"); ResultSet cursor = stmt.executeQuery("SELECT genero, titulo " + " FROM filme " + " WHERE codigo = 499"); Prof. Marcos André Pisching, M.Sc. 16

ResultSet O método executeQuery(), da interface Statement, retorna um objeto ResultSet.  Cursor para as linhas de uma tabela.  Pode-se navegar pelas linhas da tabela para recuperar as informações armazenadas nas colunas Os métodos de navegação são  next(), previous(), absolute(), first() e last() Métodos para obtenção de dados:  getInt()  getString()  getDate()  getApropriateDataType(),... Prof. Marcos André Pisching, M.Sc. 17

Tipos JDBC e métodos getADT( ) Prof. Marcos André Pisching, M.Sc. 18

Exemplo de ResultSet Prof. Marcos André Pisching, M.Sc. 19

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(); Se houver algum erro e todo o processo necessitar ser desfeito, pode-se emitir um ROLLBACK usando: con.rollback(); Prof. Marcos André Pisching, M.Sc. 20

PreparedStatement Statement pré-compilado que é mais eficiente quando várias queries similares são enviadas com parâmetros diferentes String com instrução SQL é preparado previamente, deixando- se "?" no lugar dos parâmetros Parâmetros são inseridos em ordem, com setXXX() onde XXX é um tipo igual aos retornados pelos métodos de ResultSet Prof. Marcos André Pisching, M.Sc. 21

StoredProcedures Procedimentos desenvolvidos em linguagem proprietária do SGBD (stored procedures) podem ser chamados através de objetos CallableStatement Parâmetros são passados da mesma forma que em instruções PreparedStatement Sintaxe  con.prepareCall("{ call proc_update(?, ?,...) }");  con.prepareCall("{ ? = call proc_select(?, ?,...) }"); Prof. Marcos André Pisching, M.Sc. 22

Fechar Conexão e Exceções Após o uso, os objetos Connection, Statement e ResultSet devem ser fechados. Isto pode ser feito com o método close():  con.close();  stmt.close();  rs.close(); A exceção SQLException é a principal exceção a ser observada em aplicações JDBC Prof. Marcos André Pisching, M.Sc. 23

Implementação

Banco de Dados Conectando-se ao banco de dados  Importar o pacote java.sql  Criar objeto da classe Connection.  Carregar o driver do banco de dados.  DriverManager dará a conexão.  Inicializar os strings: driver, url, username e password. String driver =...; String url =...; String username =...; String password =...; Class.forName(driver); //carrega o driver Connection conn = DriverManager.getConnection( url, username, password); conn.close( ); Prof. Marcos André Pisching, M.Sc. 25

BD – passos de uma implementação e conexão 1) Escolher um banco de dados (MySQL, SqlServer, Interbase, Firebird, Oracle, PostgreSQL, Access...) 2) Criar as tabelas do banco de dados relacional. 3) Instalar um driver do banco de dados para JDBC ou, um driver para ODBC-JDBC 4) Importar o pacote de classes e interfaces para o acesso ao banco de dados: import java.sql.*; Prof. Marcos André Pisching, M.Sc. 26

BD – passos de uma implementação e conexão 5) Estabelecer uma conexão //captura de exceções SQLException em Java é obrigatória para usar JDBC try { // Registrando o driver JDBC para Firebird Class.forName(“org.firebirdsql.jdbc.FBDriver”).getInstance( ); // Estabelecimento da conexão Connection con = DriverManager.getConnection( “jdbc:firebirdsql://[host]:[port]/meuBD”,”conta”,”senha”); } catch (SQLException e) { e.printStackTrace(); } Prof. Marcos André Pisching, M.Sc. 27

BD – passos de uma implementação e conexão 6) Executar comandos SQL Statement stm = con.createStatement( ); String SQL = “Select titulo, autor, total_faixas from MeusCDs”; 7) Interface ResultSet permite colher os resultados da execução de uma Query: ResultSet rs = stm.executeQuery(SQL); //Executa a query while (rs.next( )) { // next informa se há resultado e posiciona na proxima linha String tit = rs.getString(“titulo”); // getString – recupera uma string (campo titulo) String aut = rs.getString(“autor”); int totalFaixas = rs.getInt(“total_faixas”); // rs.getString(“titulo”); // titulo é o campo da tabela de autores do banco de dados //de livros System.out.println(“Titulo: “ + tit + “ Autor: “ + aut + “ Tot. Faixas: “ + totalFaixas); } Prof. Marcos André Pisching, M.Sc. 28

BD – passos de uma implementação e conexão 8) Encerrando o statement: // libera os recursos associados à execução desta consulta, mas deixa a // conexão aberta para a execução de uma próxima instrução stm.close( ); 9) Encerrando a conexão - connection: // implementar o finally do tratamento de exceção para abertura da conexão finally { try { con.close( ); } catch(SQLException se) { System.out.println(“houve erro ao fechar a conexao”); se.printStackTrace( ); } Prof. Marcos André Pisching, M.Sc. 29

BD – passos de uma implementação e conexão Modo geral de acesso aos drivers de banco de dados: Connection conn = new Connection( ); // O Sun JDBC-ODBC bridge Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).getInstance( ); // IBM DB2 Class.forName(“COM.ibm.db2.jdbc.net.DB2Driver”).newInstance( ) ; // Oracle 8i DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver( )); Prof. Marcos André Pisching, M.Sc. 30

Demonstrações

Netbeans  Configurando drivers  Estabelecendo uma conexão  Criando banco de dados  Acessando banco de dados  Implementando uma classe de Conexão Prof. Marcos André Pisching, M.Sc. 32

Demonstrações Netbeans - Projetos  AcessoBD  ControleAlunos  ControleFuncionariosCompletoSimplificado Prof. Marcos André Pisching, M.Sc. 33