JDBC Java Dababase Connectivity Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.

Slides:



Advertisements
Apresentações semelhantes
Instalação e Configuração
Advertisements

Aula 3 – DB2 Express-C Autor:
Banco de Dados I Aula 20.
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
SQL Renata Viegas.
Tecnologia de Programação BD em.Net: Conexão com SQL Server 1º Semestre 2009 > PUCPR > BSI Bruno C. de Paula.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > 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
28.5 Instruções para instalar o MySQL e o MySQL Conector/J
Maurício Edgar Stivanello
Linguagens de Programação Orientadas a Objetos
Módulo I Interface com BancoDados JDBC
Oficina sobre banco de dados
Ronaldo Celso Messias Correia
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.
Banco de dados Profª Kelly Medeiros.
Java & Bancos de Dados Universidade Salgado de Oliveira Goiânia
Hibernate com JPA Prática
Java :: Persistência de Dados
Acesso a Base de Dados JDBC Trabalho Realizado por:
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]
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Integração com Banco de Dados
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
FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA Módulo de Programação Prof. Flávio Dantas.
P ROGRAMAÇÃO Prof.: Bruno Rafael de Oliveira Rodrigues.
Rafael Lucio, Desenvolvedor Jr Padrão Informática e Assessor de TI Secretaria Municipal da Saúde;
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.
FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA Módulo de Programação Prof. Flávio Dantas.
Banco de dados.
Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – Ceça.
Curso Programação – JAVA Centro de Formação São Domingos
Configuração do Ambiente de programação
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
Aula Prática 4 Monitoria IP/CC (~if669).
Curso de Linguagem Java
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
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.
Prof. Renato de Oliveira Bastos
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.
Java Acesso a Banco de Dados Prof. Marcos André Pisching, M.Sc.
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.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
BD SQL (Insert, Update, Delete) e Select Hayslan Nicolas Colicheski Bucarth – IFRO / 2015 –
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 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.
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:

JDBC Java Dababase Connectivity Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008

JDBC Java Database Connectivity. Tecnologia da Sun para acesso a dados. Acessa qualquer banco de dados. JDBC é uma API, ou seja, apenas especificação. Implementado através de um driver fornecido pelo fabricante. Pacote base: java.sql

JDBC API JDBC API é um conjunto de interfaces que são implementados pelos drivers dos fornecedores de banco de dados. O fato de utilizar interfaces garante a independência da aplicação em relação aos bancos de dados, garantindo a portabilidade. Você pode conferir uma lista dos drivers disponíveis no site:

Principais elementos da API Driver: fornecido pelo fabricando do banco de dados, é específico para cada SGBD. DriverManager: responsável pela criação da conexão. Connection: representa uma conexão física com o SGBD. Statement/PreparedStatement: comando executado no SGBD (insert, delete, update). ResultSet: resultado da consulta a um banco de dados.

Driver JDBC Cada banco de dados tem sua implementação para a API JDBC. Chamamos essa implementação de driver. O nome do Driver do MySQL é connectorJ Baixe o driver do site Abra o arquivo compactado e procure pelo arquivo mysql-connector-versão_atual.jar. Salve esse arquivo no diretório lib da sua aplicação.

lib Botão direito na lib, Build Path -> Add to Build Path. A partir de agora, essa biblioteca está registrada para esse (e somente para esse) projeto.

Tabela de exemplo Crie o schema CursoDeJava, onde estarão nossas tabelas. Para nosso exemplo, precisamos da tabela Pessoa com as colunas: Id: int auto-numerado (primary key, chave-primária, pk). Nome: varchar(50). Endereco: varchar(50). Telefone: varchar(50). Cpf: varchar(11) Existem quatro operações em banco de dados: select, insert, update, delete. Em alguns livros podemos encontrar o termo CRUD (create, recover, update, delete).

Insert Comando para inclusão de dados em uma tabela. Veja o exemplo: –Insert into Pessoa (nome, endereco, telefone, cpf) values (Marco, QE4, , ) –Insert into Pessoa (nome, cpf) values (Diego Lucas, ) Informe corretamente o nome das colunas e em seguida os seus valores (na sequência correta).

Update Comando SQL para atualização de dados. Exemplo: –Update Pessoa set nome = Marco Antonio where id = 10 –Update Pessoa set nome = Marco Antonio, endereco = Novo Endereço where id = 22

Delete Apaga o registro, geralmente baseando-se na chave primária. Exemplo: –Delete from Pessoa where id = 100 –Delete from Pessoa where id in (10, 12, 14) –Delete from Pessoa Comando não muito recomendado. Apaga sua tabela inteira.

Select Chave do sucesso do SQL, o comando select recupera dados das tabelas de uma forma eficiente. Sua sintaxe é bastante flexível, possibilitando toda e qualquer forma de consulta para mostrar dados para os usuários. Exemplo: –Select * from Pessoa –Select nome, endereco from Pessoa –Select * from Pessoa where id = 10 –Select * from Pessoa where nome like %Ma% Recupera todos os registros onde o campo nome tenha a ocorrência Ma. O caracter % indica que Ma pode estar em qualquer lugar dentro da coluna nome.

Tutorial de SQL

O que é importante Para criar uma conexão com um SGBD qualquer precisamos seguir diversos passos que não precisam ser decorados!!! Quando nosso sistema começa a crescer e se sofisticar (JEE, Hibernate, Servlet, JSP, etc), você não irá mais ter contato com esse mecanismo, pois tudo será feito de forma automática pelos servidores. Apesar de haver diversos frameworks que facilitam o acesso a dados, o JDBC ainda é um dos mais usados.

Parâmetros da conexão Para acessar um SGBD na rede, você deve informar a localização do mesmo. Alguns parâmetros são obrigatórios. Veja a lista: Url: protocolo e endereço do SGBD na rede. Driver: nome do driver que você vai usar para acessar o banco. User: nome do usuário. Password: senha do usuário.

URL Usada para criar a conexão com a base de dados. Geralmente contém nome do servidor, porta, protocolo, subprotocolo, database. É específico para cada banco de dados, sendo assim, você deve verificar a documentação.

Driver A interface Driver é utilizada pelo mecanismo interno do JDBC (suas implementações). É obrigatório carregá-lo, pois só assim sua aplicação saberá como interpretar os comandos SQL. Veja um exemplo: Class.forName(com.mysql.jdbc.Driver);

Connection Representa uma conexão física com o SGBD. A sintaxe é fornecida pelo fabricante, mas todas são similares. Veja alguns exemplos: jdbc:odbc:anuncios jdbc:mysql://alnitak.orion.org/clientes jdbc:cloudscape:rmi://host:1098/MyDB;create=true

DriverManager O DriverMaganer manipula os Drivers informados anteriormente. Possui métodos para registrar um driver, remover ou listar todos. É utilizado para recuperar uma conexão baseando-se em parâmetros. Veja um exemplo: Connection con = DriverManager.getConnection(jdbc:mysql://nome_do_servidor/nome_do_database, root, senha);

Statement Oferece meios para passar comandos ao SGBD. Statement stmt = con.createStatement(); Com o stmt podemos usar os métodos execute(), executeQuery(), executeBatch() e executeUpdate() para enviar instruções ao SGBD. Subinterfaces: PreparedStatement (instruções SQL pré- compiladas) e CallableStatement (StoredProcedures).

Enviando instruções stmt.execute(CREATE TABLE Pessoa + (id MEDIUMINT NOT NULL AUTO_INCREMENT +, nome varchar(50) +, endereco varchar(50) +, telefone varchar(20) +, cpf varchar(20) +, PRIMARY KEY(id) ) ); int quantidadeDeRegistros = stmt.executeUpdate(INSERT INTO + PESSOA (nome, endereco, telefone, cpf) + VALUES + ('Marco Antonio', 'CNB 14 LOTE 10', ' ', '832869') );

ResultSet O ResultSet encapsula o resultado de uma consulta a uma tabela na forma de um cursor. Métodos de navegação: next(), previous(), first() e last(). Métodos para obter dados de uma coluna: getInt(), getString(), getDate(), getObject(), etc.

Obtenção de dados ResultSet rs = stmt.executeQuery(SELECT * FROM Pessoa ); while (rs.next()) { int idPessoa = rs.getInt(id); String nomeDaPessoa = rs.getString(nome); String enderecoDaPessoa = rs.getString(endereco); //Continua para todas as colunas //Depois, faça algo com os valores obtidos. //Mostrar numa tela por exemplo }

PreparedStatement É um Statemente pré-compilado que é mais eficiente quando temos o mesmo comando repetido várias vezes, mudando apenas os parâmetros. Veja o exemplo: String sql = INSERT INTO Pessoa (nome, endereco, telefone, cpf) values (?, ?, ?, ?); PreparedStatement stmt = con.prepareStatement(sql); stmt.setString(1, Marco Antonio); stmt.setString(2, CNB 14 LOTE 10); stmt.setString(3, ); stmt.setString(4, ); stmt.executeUpdate();

Feche tudo Lembre-se de fechar todos os recursos que você abriu para que outras pessoas possa utilizá-los. Veja alguns exemplos: con.close; stmt.close; rs.close;

GerenteDeConexao package com.livraria.persistencia; import java.sql.*; public class GerenteDeConexao { private Connection conexao; private String driver = "com.mysql.jdbc.Driver"; private String url = "jdbc:mysql://localhost:3306/CursoDeJava"; private String usuario = "root"; private String senha = ""; /** * Conecta a aplicação no banco de dados usando os parâmetros informados */ private void conectar() { try { Class.forName(driver); conexao = DriverManager.getConnection(url, usuario, senha); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }

GerenteDeConexao /** * Recupera uma conexão válida * Conecta caso a conexão ainda não tenha sido feita uma conexão válida com o banco de dados */ private Connection getConexao() { if (conexao == null) { conectar(); } return conexao; }

GerenteDeConexao /** * Executa comandos SQL de inclusão, alteração e exclusão comando Comando SQL a ser executado no banco de dados valores Lista de valores passados para o banco de dados (utiliza argumentos variáveis) */ public void executarComando(String comando, String... valores) { try { PreparedStatement stmt = getConexao().prepareStatement(comando); int indice = 1; for (String valor : valores) { stmt.setString(indice, valor); indice++; } } catch (SQLException e) { e.printStackTrace(); }

GerenteDeConexao /** * Executa uma consulta no banco de dados consulta Consulta SQL (SELECT) Um ResultSet contendo o resultado da consulta */ public ResultSet executarConsulta(String consulta) { try { PreparedStatement stmt = getConexao().prepareStatement(consulta); return stmt.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return null; }

InsereDados package com.livraria.persistencia; public class InsereDados { public static void main(String[] args) { GerenteDeConexao gerente = new GerenteDeConexao(); StringBuilder sql = new StringBuilder("INSERT INTO PESSOA "); sql.append("(NOME, ENDERECO TELEFONE, CPF)"); sql.append("VALUES(?, ?, ?, ?)"); gerente.executarComando(sql.toString(), "MARCO", "GUARÁ", " ", " "); }

AtualizaDados package com.livraria.persistencia; public class AtualizaDados { public static void main(String[] args) { GerenteDeConexao gerente = new GerenteDeConexao(); StringBuilder sql = new StringBuilder("UPDATE PESSOA "); sql.append("SET NOME = ?, ENDERECO = ? "); sql.append("WHERE ID = ? "); gerente.executarComando(sql.toString(), "NOVO NOME", "NOVO ENDEREÇO", 1"); }

ExcluiDados package com.livraria.persistencia; public class ExcluiDados { public static void main(String[] args) { GerenteDeConexao gerente = new GerenteDeConexao(); StringBuilder sql = new StringBuilder("DELETE FROM PESSOA WHERE ID = ?"); gerente.executarComando(sql.toString(), "1"); ; }

Algumas considerações result nome do ResultSet (resultado da consulta). result.getString(id") Recupera o valor da coluna codigo. result.getString("nome") Recupera o valor da coluna nome.

ConsultaDados package com.livraria.persistencia; import java.sql.*; public class ConsultaDados { public static void main(String[] args) { GerenteDeConexao gerente = new GerenteDeConexao(); StringBuilder sql = new StringBuilder("SELECT * FROM PESSOA"); ResultSet result = gerente.executarConsulta(sql.toString()); try { while (result.next()) { System.out.println("ID: " + result.getString("ID")); System.out.println("NOME: " + result.getString("NOME")); System.out.println("ENDEREÇO: " + result.getString("ENDERECO")); System.out.println("TELEFONE: " + result.getString("TELEFONE")); System.out.println("CPF: " + result.getString("CPF")); System.out.println("______________________________"); } } catch (SQLException e) { e.printStackTrace(); }

Dúvidas?