Click here to get the file

Propaganda
Desnvolvimento de Projetos e
Aplicações Web
Ceça Moraes – [email protected]
Conteúdo

JDBC
31/05/2017
2
Introdução
JDBC (Java DataBase Conectivity) é
uma API Java que fornece classes e
interfaces para acessar e tratar dados
 Conjunto de classes que permite a um
programa Java acessar um banco de
dados relacional através da linguagem
SQL
 Suportada pela maioria dos SGBDS
(Oracle, Microsoft, IBM, etc.).
31/05/2017

3
JDBC

A API JDBC padroniza:
̶
̶
̶

O mecanismo de como deve ser feito a
conexão ao Banco de Dados;
Abordagem para criar consultas
Resultado da consulta
Pacote java.sql
31/05/2017
4
Arquitetura





Cógigo Java chama api JDBC
JDBC carrega um driver
Driver conversa com um banco de dados
Podemos ter mais de um driver -> mais de
um banco de dados
Trocar o banco de dados sem modificar o
código da aplicação
31/05/2017
5
ODBC
ODBC (Open Database Connectivity) é
uma API construída em C para acessar
bancos de dados.
 ODBC não é uma API independente de
plataforma, sendo patrocinado pela
Microsoft.
 A API JDBC oferece um Driver
específico para o padrão ODBC.

31/05/2017
6
java.sql: Classes e Interfaces
31/05/2017
7
Principais Classes e Interfaces
DriverManager
 Connection
 Statement
 PreparedStatement
 CallableStatement
 ResultSet
 SQLException

31/05/2017
8
DriverManager
Utilizado para estabelecer uma conexão
entre o driver apropriado e o BD
 Métodos

̶
public static Connection
getConnection (String url) throws
SQLException
̶
onde:
 url
= database url (do tipo
jdbc:subprotocol:subname)
̶
31/05/2017
Inicia uma conexão ao banco e retorna um
objeto Connection
9
DriverManager

Exemplo:
̶
31/05/2017
Connection conn =
DriverManager.getConnection
("jdbc:mysql://localhost:3306/mytes
t?user=test master&password=1234");
10
DriverManager
 String
̶
31/05/2017
de conexão:
jdbc:mysql://host:porta/banc
odedados?propriedade1=valo
r1&propriedade2=valor2...
11
Connection

Representa uma conexão com um BD
específico
Comandos SQL são executados e resultados são
retornados
Aspectos de transações são tratados (commit,etc)
Descrição do BD pode ser obtida (metadados)
̶
̶
̶

Métodos
̶
public Statement createStatement()
throws SQLException
̶
Cria um objeto com uma instrução SQL para
futura execução
31/05/2017
12
Connection
Métodos

public void close() throws
SQLException
Fecha a conexão atual
̶

public void commit() throws
SQLException
̶

Confirma a transação
public void rollback() throws
SQLException
31/05/2017̶
Cancela a transação
13
Connection

Exemplo
̶ Statement stmt =
conn.createStatement();

Necessário antes de executar qualquer
comando SQL
31/05/2017
14
Statement

Utilizado para enviar comandos SQL
simples

Métodos
̶
public ResultSet executeQuery
(String sql) throws
SQLException
 Executa
a consulta SQL e retorna um objeto
ResultSet com o resultado da consulta
31/05/2017
15
Statement
Métodos

public int execute(String
sql) throws SQLException
Executa instruções INSERT, UPDATE ou
DELETE especificada em SQL
̶

public void cancel() throws
SQLException
̶
31/05/2017
Cancela uma instrução SQL que esteja
sendo executada
16
PreparedStatement

Utilizado para enviar comandos SQL
que recebam um ou mais parâmetros
como entrada

Eficiência: pré-compilação e
armazenamento
31/05/2017
17
PreparedStatement
Métodos

public ResultSet executeQuery
(String sql) throws
SQLException
̶
Executa a consulta SQL passada em SQL e
retorna um objeto ResultSet com o
resultado da consulta
PreparedStatement stmt;
ResultSet rs =
stmt.executeQuery("SELECT * FROM
phones")
31/05/2017
18
PreparedStatement
Métodos

public int executeUpdate() throws
SQLException
Usado para efetuar atualizações em um banco de
dados como a criação de tabelas (CREATE),
alterações (UPDATE) ou exclusão (DELETE) de
registros, etc.
̶


public setInt(int indice, int valor)
public setBoolean(int indice,
boolean valor)
̶
31/05/2017
Usado para configurar os parâmetros de um código
SQL
19
PreparedStatement
Prepared Statements são usados por
consultas que são realizadas muitas
vezes.
 Eles são interpretados somente uma
vez (pré-compilados).
 Parâmetros:

̶
̶
31/05/2017
setString(i, value), setInt(i,
value), etc.
o parâmetro i (ponto de interrogação)
receberá o valor definido em value
20
Consulta com
PreparedStatement
String queryStr =
"SELECT * FROM Program " +
"WHERE Name = ? and Cost < ?”;
PreparedStatement pstmt =
con.prepareStatement(queryStr);
pstmt.setString(1, “xxxxxxxx”);
pstmt.setInt(2, 1000);
ResultSet rs =
pstmt.executeQuery();
31/05/2017
21
Deleção com
PreparedStatement
String deleteStr =
“DELETE FROM Program " +
"WHERE Name = ? and Cost < ?”;
PreparedStatement pstmt =
con.prepareStatement(deleteStr);
pstmt.setString(1, “XXXXXXXX”);
pstmt.setInt(2, 1000);
int delnum = pstmt.executeUpdate();
31/05/2017
22
ResultSet
Utilizado para realizar as consultas no BD
 Objeto com as linhas que satisfazem as
condições do comando SQL.
 Fornece acesso aos dados destes registros
 Métodos

̶
public boolean next()
 Move
31/05/2017
para o próximo registro do ResultSet
23
ResultSet
Métodos

Métodos para obter o valor apropriado
de cada coluna:
̶
̶
̶
̶
31/05/2017
getInt(int col) ou (String col)
getBoolean(int col) ou (String
col)
getString(int col) ou (String
col)
getByte(int col) ou String col)
24
SQLException


É a classe utilizada para tratar as possíveis
exceções que podem ser geradas quando se
acessa um Banco de Dados.
Métodos
̶
public int getErrorCode()
̶
Obtém o código de erro específico do fabricante
do BD
try {
}
catch(SQLException e){ }
̶
̶
̶
31/05/2017
25
SETE PASSOS BÁSICOS PARA
USAR O JDBC
1.
 2.
 3.
 4.

Carregar o driver
Definir a URL de Conexão
Estabelecer a Conexão
Criar um objeto Statement
5. Executar a Consulta
 6. Processar os Resultados
 7. Fechar a Conexão

31/05/2017
26
Usando o JDBC

1. Carregar o driver
try {
Class.forName("com.mysql.jdbc.Driver")
;
. . .
}
catch(ClassNotFoundException e) {...}
31/05/2017
27
Usando o JDBC

2. Definir a URL de Conexão
String URL =
"jdbc:mysql://localhost:3306/
JavaJdbc";
31/05/2017
28
Usando o JDBC

Estabelecer a conexão
String user= “abc”;
String password = “secret”;
Connection connection =
DriverManager.getConnection(URL,
user,password);
31/05/2017
29
Usando o JDBC

4. Criar um objeto Statement
Statement statement =
connection.createStatement();
31/05/2017
30
Usando o JDBC
5. Executar a Consulta:
String query = “SELECT col1,
col2, col3 FROM tabela”;
ResultSet resultSet =
statement.executeQuery(query);


Para modificar os dados, utilizar
executeUpdate ou execute com
UPDATE, INSERT ou DELETE
31/05/2017
31
Usando o JDBC
6. Processar os Resultados
while(resultSet.next()) {
System.out.println(resultSet.
getString(1)+ “” +
resultSet.getString(2)+ “” +
resultSet.getInt(3));
}


A primeira coluna tem índice 1
31/05/2017
32
Usando o JDBC

7. Fechar a Conexão
connection.close();

Abrir e fechar conexão é um recurso
que consome muito da máquina;
31/05/2017
33
Exemplo Completo com MySQL
31/05/2017
34
Aplicação Java
import java.sql.*;
public class ExemploJdbc {
public static final String
URL =
"jdbc:mysql://localhost:3306/BdTeste";
public static final String
DRIVER_NAME =
“com.mysql.jdbc.Driver";
public static final String
USER = “root";
public static final String
31/05/2017
35
PASSWD = “”;
Aplicação Java
(Continuação)
public static void main(String
args[]) {
try {
Class.forName(DRIVER_NAME);
Connection conexao =
DriverManager.getConnection(URL,
USER, PASSWD);
Statement stmt =
conexao.createStatement();
ResultSet rs =
stmt.executeQuery("SELECT NOME,
TELEFONE FROM CONSUMIDOR");
31/05/2017
36
Aplicação Java
(Continuação)
while(rs.next()) {
System.out.println ("->"+rs.getString("nome")
+ " -->" + rs.getString("telefone"));
}
} catch (SQLException ex) {
System.err.println ("SQLException: " +
ex.getMessage());
}
catch(ClassNotFoundException e){
System.err.println("Nao pode carregar o
driver" +
e.getMessage());
}
} // fecha o try
37
} // fecha a classe
Atualizando o BD

Utiliza-se o método executeUpdate()
quando se deseja inserir, alterar ou
excluir registros
try {
Statement stmt =
conexao.createStatement();
String sqlString=“DELETE FROM
TABELA”
stmt.executeUpdate(sqlString);
}
31/05/2017
38
catch (SQLException e) {...}
Exercício & Recomendações
Exercício
Testar o programa ExemploJdbc
apresentado nos slides anteriores
 Não esquecer de:

Criar o Banco de Dados no MySQL
̶
 Nome:
BdTeste
 Tabela:
Consumidor
 Campos: id_consumidor, nome, telefone
̶
31/05/2017
Inserir informações na Tabela Consumidor
40
Configurar no Eclipse
Download do driver Jdbc Tipo 4
(mysql-connector-java-3.0.2betabin.jar) no portal
 Adicionar o driver ao eclipse.
 Ver no portal material de como
configurar eclipse + mysql

31/05/2017
41
Download