Desnvolvimento de Projetos e Aplicações Web cecafac@gmail.com cecafac@gmail.com Ceça Moraes –...

Post on 21-Apr-2015

121 views 2 download

Transcript of Desnvolvimento de Projetos e Aplicações Web cecafac@gmail.com cecafac@gmail.com Ceça Moraes –...

Desnvolvimento de Projetos e Aplicações Web Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – cecafac@gmail.comCeça Moraes – cecafac@gmail.com

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