Sei sulla pagina 1di 22

JDBC

Prof. Me. Edson Angoti Jr.

JDBC
JDBC - Java Database Connectivity JDBC API
Fornece um framework para manipular os dados armazenados em um banco de dados Pacote java.sql

JDBC Driver
Corresponde ao driver especfico para tratar com as requisies e respostas de um especfico SGBD

Prof. Me. Edson Angoti Jnior

JDBC

Computador Cliente Aplicao Java JDBC API JDBC Driver

Servidor de Banco de Dados

Prof. Me. Edson Angoti Jnior

Processo bsico para utilizar o JDBC


1. 2. 3. 4. 5. Obter um driver JDBC Obter uma conexo com o banco de dados Preparar os dados para consulta Executar a consulta Obter e verificar os resultados

Prof. Me. Edson Angoti Jnior

1. Obter um driver JDBC


Cada SGBD possui um driver diferente, que fornecido pelo fabricante Para o MySQL, vamos usar o Connector/J fornecido em http://www.mysql.com/downloads/connector/j

Prof. Me. Edson Angoti Jnior

1. Obter um driver JDBC


Adicionar o driver ao projeto Eclipse
Com o projeto selecionado, clique com o boto direito e escolha Build Path / Configure Build Path

Prof. Me. Edson Angoti Jnior

1. Obter um driver JDBC

Prof. Me. Edson Angoti Jnior

1. Obter um driver JDBC


Localize o arquivo
mysql-connector-java-5.1.15-bin.jar

Prof. Me. Edson Angoti Jnior

1. Obter um driver JDBC

Prof. Me. Edson Angoti Jnior

2. Obter uma conexo com o banco de dados

Vamos criar um banco de dados com o nome banco Vamos criar uma tabela chamada conta

Prof. Me. Edson Angoti Jnior

10

2. Obter uma conexo com o banco de dados


package br.edu.iftm; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; //implementa o design pattern Factory public class FabricaDeConexao { public static Connection getConnection() { try { return DriverManager.
getConnection("jdbc:mysql://localhost/banco", "root", "");

} catch (SQLException e) { throw new RuntimeException(e); } }

String de conexo JDBC

public static void main(String[] args) { FabricaDeConexao.getConnection(); } }


Prof. Me. Edson Angoti Jnior

11

3. Preparar a query
Ns trabalhamos com o sgbd enviando a ele comandos sql, conhecidos como query Por exemplo, se desejarmos inserir um registro na nossa tabela conta teremos que usar a seguinte query:
insert into conta (titular,numero,agencia,limite,saldo) values ("Montillo",1,1,200,100)

Prof. Me. Edson Angoti Jnior

12

3. Preparar a query
Em um programa java deveremos fazer o seguinte: String sql = "insert into conta titular,numero,agencia,limite,saldo ) values (?,?,?,?,?)"; Observe a existencia de ? No lugar dos valores a serem inseridos: assim nos evitamos problemas com os diferentes formatos de dados
Prof. Me. Edson Angoti Jnior

13

3. Preparar a query
A partir da montagem da string com a query devemos obter um objeto chamado PreparedStatement

PreparedStatement stmt = conexao.prepareStatement(sql);

Prof. Me. Edson Angoti Jnior

14

3. Preparar a query
Por fim, vamos abastecer o objeto de consulta com os valores reais: stmt.setString(1,Montillo); stmt.setInt(2, 1); stmt.setInt(3, 1); stmt.setDouble(4, 200.0); stmt.setDouble(5, 200.0); Os valores so definidos usando mtodos setXXX, sendo XXX definido pelo tipo do dado. Consulte http://download.oracle.com/javase/7/docs/api/ para a lista completa de mtodos
Prof. Me. Edson Angoti Jnior

15

4. Executar a consulta
Depois de preparar a consulta, podemos enviala ao sgbd. Temos trs mtodos para isso:

Prof. Me. Edson Angoti Jnior

16

Exemplo: inserir registro


public void inserir(Conta c) throws SQLException { Connection conexao = FabricaDeConexao.getConnection(); String sql = "insert into conta" + "(titular,numero,agencia,limite,saldo)" + " values (?,?,?,?,?)"; PreparedStatement stmt = conexao.prepareStatement(sql); stmt.setString(1,c.getTitular()); stmt.setInt(2, c.getNumero()); stmt.setInt(3, c.getAgencia()); stmt.setDouble(4, c.getLimite()); stmt.setDouble(5, c.getSaldo()); stmt.execute(); stmt.close(); conexao.close(); }

Prof. Me. Edson Angoti Jnior

17

5. Obter e verificar os resultados


Quando usamos o mtodo executeQuery teremos como retorno um objeto do tipo ResultSet Este objeto representa uma tabela de dados que normalmente gerado pela execuo de uma consulta ao banco de dados

Prof. Me. Edson Angoti Jnior

18

5. Obter e verificar os resultados


Um objeto ResultSet mantm um cursor apontando para a sua linha atual de dados Inicialmente o cursor posicionado antes da primeira linha O mtodo next move o cursor para a prxima linha, ou retorna false quando no houver mais linhas no objeto ResultSet0. Este mtodo pode ser usado em um loop while para percorrer o conjunto de resultados.

Prof. Me. Edson Angoti Jnior

19

Exemplo: imprimindo uma consulta


public void listagem() throws SQLException { Connection conexao = FabricaDeConexao.getConnection(); String sql = "select * from conta"; PreparedStatement stmt = conexao.prepareStatement(sql); ResultSet resultado = stmt.executeQuery(); while (resultado.next()) { System.out.println(resultado.getString("titular")); } resultado.close(); conexao.close(); }

Usamos os mtodos getXXX do objeto do tipo ResultSet para recuperar valores dos registros. XXX depende do tipo de dado da coluna na tabela do banco de dados.
Prof. Me. Edson Angoti Jnior

20

Exerccios
Modificar o mtodo listagem para imprimir todos os dados do registro. Acrescentar os mtodos void atualiza(Conta c, int id), exclui(int id), int pesquisa(String titular) Realizar testes criando 5 contas e salvando no banco, depois alterar a conta cujo id = 1, exlcuir a conta cujo id = 2, listar todas as contas

Prof. Me. Edson Angoti Jnior

21

Exerccios
Crie uma aplicao para armazenar uma agenda de contatos. Esta aplicao dever possibilitar a insero de novo contato, alterar contato existente, excluir um contato, pesquisar contatos, listar todos os contatos, listar contatos com nomes comeando com uma letra informada.

Prof. Me. Edson Angoti Jnior

22

Potrebbero piacerti anche