A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – Ceça.

Apresentações semelhantes


Apresentação em tema: "Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – Ceça."— Transcrição da apresentação:

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

2 17/12/20142 Conteúdo JDBC

3 17/12/20143 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.). 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.).

4 17/12/20144 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 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

5 17/12/20145 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 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

6 17/12/20146 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. 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.

7 17/12/20147 java.sql : Classes e Interfaces

8 17/12/20148 Principais Classes e Interfaces DriverManager Connection Statement PreparedStatement CallableStatement ResultSet SQLException DriverManager Connection Statement PreparedStatement CallableStatement ResultSet SQLException

9 17/12/20149 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) ̶ 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étodos ̶ public static Connection getConnection (String url) throws SQLException ̶ onde: url = database url (do tipo jdbc:subprotocol:subname) ̶ Inicia uma conexão ao banco e retorna um objeto Connection

10 17/12/201410 DriverManager Exemplo: ̶ Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/mytes t?user=test master&password=1234"); Exemplo: ̶ Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/mytes t?user=test master&password=1234");

11 17/12/201411 DriverManager String de conexão: ̶ jdbc:mysql://host:porta/banc odedados?propriedade1=valo r1&propriedade2=valor2... String de conexão: ̶ jdbc:mysql://host:porta/banc odedados?propriedade1=valo r1&propriedade2=valor2...

12 17/12/201412 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 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

13 17/12/201413 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 ̶ Cancela a transação public void close() throws SQLException ̶ Fecha a conexão atual public void commit() throws SQLException ̶ Confirma a transação public void rollback() throws SQLException ̶ Cancela a transação

14 17/12/201414 Connection Exemplo ̶ Statement stmt = conn.createStatement(); Necessário antes de executar qualquer comando SQL Exemplo ̶ Statement stmt = conn.createStatement(); Necessário antes de executar qualquer comando SQL

15 17/12/201415 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 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

16 17/12/201416 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 ̶ Cancela uma instrução SQL que esteja sendo executada public int execute(String sql) throws SQLException ̶ Executa instruções INSERT, UPDATE ou DELETE especificada em SQL public void cancel() throws SQLException ̶ Cancela uma instrução SQL que esteja sendo executada

17 17/12/201417 PreparedStatement 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

18 17/12/201418 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") 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")

19 17/12/201419 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) ̶ Usado para configurar os parâmetros de um código SQL 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) ̶ Usado para configurar os parâmetros de um código SQL

20 17/12/201420 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: ̶ setString(i, value), setInt(i, value), etc. ̶ 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: ̶ setString(i, value), setInt(i, value), etc. ̶ o parâmetro i (ponto de interrogação) receberá o valor definido em value

21 17/12/201421 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();

22 17/12/201422 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();

23 17/12/201423 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 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étodos ̶ public boolean next() Move para o próximo registro do ResultSet

24 17/12/201424 ResultSet Métodos Métodos para obter o valor apropriado de cada coluna: ̶ getInt(int col) ou (String col) ̶ getBoolean(int col) ou (String col) ̶ getString(int col) ou (String col) ̶ getByte(int col) ou String col) Métodos para obter o valor apropriado de cada coluna: ̶ getInt(int col) ou (String col) ̶ getBoolean(int col) ou (String col) ̶ getString(int col) ou (String col) ̶ getByte(int col) ou String col)

25 17/12/201425 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){ } É 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){ }

26 17/12/201426 SETE PASSOS BÁSICOS PARA USAR O JDBC 1. Carregar o driver 2. Definir a URL de Conexão 3. Estabelecer a Conexão 4. Criar um objeto Statement 5. Executar a Consulta 6. Processar os Resultados 7. Fechar a Conexão 1. Carregar o driver 2. Definir a URL de Conexão 3. Estabelecer a Conexão 4. Criar um objeto Statement 5. Executar a Consulta 6. Processar os Resultados 7. Fechar a Conexão

27 17/12/201427 Usando 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) {...}

28 17/12/201428 Usando 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";

29 17/12/201429 Usando o JDBC Estabelecer a conexão String user= “abc”; String password = “secret”; Connection connection = DriverManager.getConnection(URL, user,password); Estabelecer a conexão String user= “abc”; String password = “secret”; Connection connection = DriverManager.getConnection(URL, user,password);

30 17/12/201430 Usando o JDBC 4. Criar um objeto Statement Statement statement = connection.createStatement(); 4. Criar um objeto Statement Statement statement = connection.createStatement();

31 17/12/201431 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 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

32 17/12/201432 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 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

33 17/12/201433 Usando o JDBC 7. Fechar a Conexão connection.close(); Abrir e fechar conexão é um recurso que consome muito da máquina; 7. Fechar a Conexão connection.close(); Abrir e fechar conexão é um recurso que consome muito da máquina;

34 Exemplo Completo com MySQL 17/12/201434

35 17/12/201435 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 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 = “”;

36 17/12/201436 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 37 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

38 17/12/201438 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); } catch (SQLException e) {...} 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); } catch (SQLException e) {...}

39 Exercício & Recomendações

40 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 ̶ Inserir informações na Tabela Consumidor 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 ̶ Inserir informações na Tabela Consumidor 17/12/201440

41 17/12/201441 Configurar 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


Carregar ppt "Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – Ceça."

Apresentações semelhantes


Anúncios Google