Desnvolvimento de Projetos e Aplicações Web Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – [email protected]ça Moraes – [email protected]
11/04/23 2
ConteúdoConteúdo
JDBC JDBC
11/04/23 3
IntroduçãoIntroduçã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.).
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.).
11/04/23 4
JDBCJDBC
A API JDBC padroniza:2 O mecanismo de como deve ser feito a conexão ao Banco de Dados;2 Abordagem para criar consultas2 Resultado da consulta
Pacote java.sql
A API JDBC padroniza:2 O mecanismo de como deve ser feito a conexão ao Banco de Dados;2 Abordagem para criar consultas2 Resultado da consulta
Pacote java.sql
11/04/23 5
ArquiteturaArquitetura
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
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
11/04/23 6
ODBCODBC
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.
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.
11/04/23 7
java.sql: Classes e Interfaces
java.sql: Classes e Interfaces
11/04/23 8
Principais Classes e Interfaces
Principais Classes e Interfaces
DriverManagerConnectionStatementPreparedStatementCallableStatementResultSetSQLException
DriverManagerConnectionStatementPreparedStatementCallableStatementResultSetSQLException
11/04/23 9
DriverManagerDriverManagerUtilizado para estabelecer uma conexão
entre o driver apropriado e o BDMétodos
2public static Connection getConnection (String url) throws SQLException
2 onde:url = database url (do tipo
jdbc:subprotocol:subname)
2 Inicia uma conexão ao banco e retorna um objeto Connection
Utilizado para estabelecer uma conexão entre o driver apropriado e o BD
Métodos2public static Connection getConnection (String url) throws SQLException
2 onde:url = database url (do tipo
jdbc:subprotocol:subname)
2 Inicia uma conexão ao banco e retorna um objeto Connection
11/04/23 10
DriverManagerDriverManager
Exemplo:2Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/mytest?user=test master&password=1234");
Exemplo:2Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/mytest?user=test master&password=1234");
11/04/23 11
DriverManagerDriverManager
String de conexão:2jdbc:mysql://host:porta/bancodedados?propriedade1=valor1&propriedade2=valor2...
String de conexão:2jdbc:mysql://host:porta/bancodedados?propriedade1=valor1&propriedade2=valor2...
11/04/23 12
ConnectionConnection
Representa uma conexão com um BD específico2 Comandos SQL são executados e resultados
são retornados2 Aspectos de transações são tratados
(commit,etc)2 Descrição do BD pode ser obtida (metadados)
Métodos2 public Statement createStatement() throws SQLException
2 Cria um objeto com uma instrução SQL para futura execução
Representa uma conexão com um BD específico2 Comandos SQL são executados e resultados
são retornados2 Aspectos de transações são tratados
(commit,etc)2 Descrição do BD pode ser obtida (metadados)
Métodos2 public Statement createStatement() throws SQLException
2 Cria um objeto com uma instrução SQL para futura execução
11/04/23 13
ConnectionMétodos
ConnectionMétodos
public void close() throws SQLException
2 Fecha a conexão atualpublic void commit() throws SQLException
2 Confirma a transaçãopublic void rollback() throws SQLException
2 Cancela a transação
public void close() throws SQLException
2 Fecha a conexão atualpublic void commit() throws SQLException
2 Confirma a transaçãopublic void rollback() throws SQLException
2 Cancela a transação
11/04/23 14
ConnectionConnection
Exemplo2Statement stmt = conn.createStatement();
Necessário antes de executar qualquer comando SQL
Exemplo2Statement stmt = conn.createStatement();
Necessário antes de executar qualquer comando SQL
11/04/23 15
StatementStatement
Utilizado para enviar comandos SQL simples
Métodos2public ResultSet executeQuery (String sql) throws SQLException
Executa a consulta SQL e retorna um objeto ResultSet com o resultado da consulta
Utilizado para enviar comandos SQL simples
Métodos2public ResultSet executeQuery (String sql) throws SQLException
Executa a consulta SQL e retorna um objeto ResultSet com o resultado da consulta
11/04/23 16
Statement MétodosStatement Métodos
public int execute(String sql) throws SQLException
2 Executa instruções INSERT, UPDATE ou DELETE especificada em SQL
public void cancel() throws SQLException
2 Cancela uma instrução SQL que esteja sendo executada
public int execute(String sql) throws SQLException
2 Executa instruções INSERT, UPDATE ou DELETE especificada em SQL
public void cancel() throws SQLException
2 Cancela uma instrução SQL que esteja sendo executada
11/04/23 17
PreparedStatementPreparedStatement
Utilizado para enviar comandos SQL que recebam um ou mais parâmetros como entrada
Eficiência: pré-compilação e armazenamento
Utilizado para enviar comandos SQL que recebam um ou mais parâmetros como entrada
Eficiência: pré-compilação e armazenamento
11/04/23 18
PreparedStatementMétodos
PreparedStatementMétodos
public ResultSet executeQuery (String sql) throws SQLException
2 Executa a consulta SQL passada em SQL e retorna um objeto ResultSet com o resultado da consultaPreparedStatement stmt;
ResultSet rs = stmt.executeQuery("SELECT * FROM phones")
public ResultSet executeQuery (String sql) throws SQLException
2 Executa a consulta SQL passada em SQL e retorna um objeto ResultSet com o resultado da consultaPreparedStatement stmt;
ResultSet rs = stmt.executeQuery("SELECT * FROM phones")
11/04/23 19
PreparedStatementMétodos
PreparedStatementMétodos
public int executeUpdate() throws SQLException
2 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)
2 Usado para configurar os parâmetros de um código SQL
public int executeUpdate() throws SQLException
2 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)
2 Usado para configurar os parâmetros de um código SQL
11/04/23 20
PreparedStatementPreparedStatement
Prepared Statements são usados por consultas que são realizadas muitas vezes.
Eles são interpretados somente uma vez (pré-compilados).
Parâmetros: 2setString(i, value), setInt(i, value), etc.2 o parâmetro i (ponto de interrogação) receberá o valor definido em value
Prepared Statements são usados por consultas que são realizadas muitas vezes.
Eles são interpretados somente uma vez (pré-compilados).
Parâmetros: 2setString(i, value), setInt(i, value), etc.2 o parâmetro i (ponto de interrogação) receberá o valor definido em value
11/04/23 21
Consulta com PreparedStatement
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();
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();
11/04/23 22
Deleção com PreparedStatement
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();
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();
11/04/23 23
ResultSetResultSet
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étodos2public boolean next()
Move para o próximo registro do 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étodos2public boolean next()
Move para o próximo registro do ResultSet
11/04/23 24
ResultSetMétodosResultSetMétodos
Métodos para obter o valor apropriado de cada coluna:
2getInt(int col) ou (String col)2getBoolean(int col) ou (String col)2getString(int col) ou (String col)2getByte(int col) ou String col)
Métodos para obter o valor apropriado de cada coluna:
2getInt(int col) ou (String col)2getBoolean(int col) ou (String col)2getString(int col) ou (String col)2getByte(int col) ou String col)
11/04/23 25
SQLExceptionSQLException
É a classe utilizada para tratar as possíveis exceções que podem ser geradas quando se acessa um Banco de Dados.
Métodos2 public int getErrorCode()2 Obtém o código de erro específico do
fabricante do BD2 try {2 }2 catch(SQLException e){ }
É a classe utilizada para tratar as possíveis exceções que podem ser geradas quando se acessa um Banco de Dados.
Métodos2 public int getErrorCode()2 Obtém o código de erro específico do
fabricante do BD2 try {2 }2 catch(SQLException e){ }
11/04/23 26
SETE PASSOS BÁSICOS PARAUSAR O JDBC
SETE PASSOS BÁSICOS PARAUSAR O JDBC
1. Carregar o driver2. Definir a URL de Conexão3. Estabelecer a Conexão4. Criar um objeto Statement5. Executar a Consulta6. Processar os Resultados7. Fechar a Conexão
1. Carregar o driver2. Definir a URL de Conexão3. Estabelecer a Conexão4. Criar um objeto Statement5. Executar a Consulta6. Processar os Resultados7. Fechar a Conexão
11/04/23 27
Usando o JDBCUsando o JDBC
1. Carregar o driver
try { Class.forName("com.mysql.jdbc.Driver");
. . .
}
catch(ClassNotFoundException e) {...}
1. Carregar o driver
try { Class.forName("com.mysql.jdbc.Driver");
. . .
}
catch(ClassNotFoundException e) {...}
11/04/23 28
Usando o JDBCUsando o JDBC
2. Definir a URL de Conexão
String URL =
"jdbc:mysql://localhost:3306/JavaJdbc";
2. Definir a URL de Conexão
String URL =
"jdbc:mysql://localhost:3306/JavaJdbc";
11/04/23 29
Usando o JDBC Usando o JDBC
Estabelecer a conexãoString user= “abc”;
String password = “secret”;
Connection connection =
DriverManager.getConnection(URL,user,password);
Estabelecer a conexãoString user= “abc”;
String password = “secret”;
Connection connection =
DriverManager.getConnection(URL,user,password);
11/04/23 30
Usando o JDBCUsando o JDBC
4. Criar um objeto Statement
Statement statement =
connection.createStatement();
4. Criar um objeto Statement
Statement statement =
connection.createStatement();
11/04/23 31
Usando o JDBCUsando 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
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
11/04/23 32
Usando o JDBCUsando o JDBC
6. Processar os Resultadoswhile(resultSet.next()) {
System.out.println(resultSet.getString(1)+ “” + resultSet.getString(2)+ “” + resultSet.getInt(3));
}A primeira coluna tem índice 1
6. Processar os Resultadoswhile(resultSet.next()) {
System.out.println(resultSet.getString(1)+ “” + resultSet.getString(2)+ “” + resultSet.getInt(3));
}A primeira coluna tem índice 1
11/04/23 33
Usando o JDBCUsando o JDBC
7. Fechar a Conexãoconnection.close();
Abrir e fechar conexão é um recurso que consome muito da máquina;
7. Fechar a Conexãoconnection.close();
Abrir e fechar conexão é um recurso que consome muito da máquina;
Exemplo Completo com MySQLExemplo Completo com MySQL11/04/23 34
11/04/23 35
Aplicação JavaAplicaçã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 PASSWD = “”;
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 PASSWD = “”;
11/04/23 36
Aplicação Java(Continuação)
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");
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");
37
Aplicação Java(Continuação)
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} // fecha a classe
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} // fecha a classe
11/04/23 38
Atualizando o BDAtualizando o BD
Utiliza-se o método executeUpdate() quando se deseja inserir, alterar ou excluir registrostry { Statement stmt = conexao.createStatement(); String sqlString=“DELETE FROM TABELA”
stmt.executeUpdate(sqlString);}catch (SQLException e) {...}
Utiliza-se o método executeUpdate() quando se deseja inserir, alterar ou excluir registrostry { Statement stmt = conexao.createStatement(); String sqlString=“DELETE FROM TABELA”
stmt.executeUpdate(sqlString);}catch (SQLException e) {...}
Exercício & RecomendaçõesExercício & Recomendações
ExercícioExercício
Testar o programa ExemploJdbc apresentado nos slides anteriores
Não esquecer de:2 Criar o Banco de Dados no MySQL
Nome: BdTesteTabela: ConsumidorCampos: id_consumidor, nome, telefone
2 Inserir informações na Tabela Consumidor
Testar o programa ExemploJdbc apresentado nos slides anteriores
Não esquecer de:2 Criar o Banco de Dados no MySQL
Nome: BdTesteTabela: ConsumidorCampos: id_consumidor, nome, telefone
2 Inserir informações na Tabela Consumidor
11/04/23 40
11/04/23 41
Configurar no EclipseConfigurar no Eclipse
Download do driver Jdbc Tipo 4 (mysql-connector-java-3.0.2-betabin.jar) no portal
Adicionar o driver ao eclipse.Ver no portal material de como
configurar eclipse + mysql
Download do driver Jdbc Tipo 4 (mysql-connector-java-3.0.2-betabin.jar) no portal
Adicionar o driver ao eclipse.Ver no portal material de como
configurar eclipse + mysql