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

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

Linguagens de Programação Orientadas a Objetos

Apresentações semelhantes


Apresentação em tema: "Linguagens de Programação Orientadas a Objetos"— Transcrição da apresentação:

1 Linguagens de Programação Orientadas a Objetos
Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula 31 a 35 - Conectividade com Banco de Dados (JDBC) Elaborado com base no material cedido pelo prof. Admilson Ribeiro  Marco Fagundes

2 Acessando BD com JDBC O JDBC - “Java Database Connectivity” É uma API para acesso a SGBDs em Java JDBC não leva em consideração características intrínsecas sobre uma fonte de dados específica ou sobre o esquema de armazenamento de dados Através de JDBC pode-se enviar comandos SQL para o BD e processar os resultados

3 Funcionamento do JDBC Deve-se ter um driver JDBC instalado e o ambiente de execução configurado Na aplicação o driver JDBC é carregado e registrado para uso Em seguida uma conexão com o banco de dados é criada Faz a instanciação de um objeto do tipo “Statement” Submete-se as instruções SQL para o SGBD por meio do objeto instanciado A partir deste ponto os resultados podem ser acessados Finalmente deve-se fechar a conexão

4 Estrutura do JDBC Aplicativo Java API JDBC Gerenciador de driver JDBC
Ponte JDBC-ODBC ... Driver A ODBC e BD Drivers Drivers JDBC Protocolo de Acesso Proprietários dos BDs

5 Funcionamento do JDBC As classes JDBC estão no pacote java.sql Os programas em Java usam objetos e métodos deste pacote para ler e escrever de uma fonte de dados. Um programa que usa JDBC necessitará de um driver para a fonte de dados. JDBCODBC.DLL para o windows.

6 Tipos Importantes Interfaces Driver Connection Statement PreparedStatement (sql com parametros) CallableStatement (stored procedure) ResultSet Classes DriverManager Date Time

7 Acessando BD ODBC com a ponte JDBC-ODBC
A ponte JDBC-ODBC é implementada como JdbcOdbc.class e uma biblioteca nativa para acessar o driver ODBC(JDBCODBC.DLL) A vantagem desta ponte é que o JDBC pode acessar quase todos os bancos de dados Os drivers ODBC estão amplamente disponíveis ODBC é uma fina camada sobre o JDBC

8 A classe superior na hierarquia é a DriverManager
Classes JDBC A classe superior na hierarquia é a DriverManager O JDBC identifica um banco de dados com um URL: jdbc:odbc:<ODBC DSN>:User=<username>:PW=<password> DriverManager retorna um objeto Connection com o uso do método getConnection() A classe Connection efetua a conexão com banco de dados Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc: odbcContAcad", "", "");

9 Classes JDBC As operações de conexão e acesso a banco devem ser realizadas em um bloco try...catch Por exemplo: try{ .... } catch (SQLException ex){ System.out.println(ex.getMessage()); } catch (java.lang.Exception ex){ } //fim catch

10 Classes JDBC Cria-se os objetos Statement / PreparedStatement / CallableStatement Quando o método executeQuery() é executado, um objeto ResultSet é retornado O ResultSet contém linhas de dados que são analisadas com o método next() O método executeUpdate() faz atualizações e exclusões e retorna o número de linhas afetadas

11 Aplicativo JDBC Uma instrução SQL pode ser executada imediatamente(objeto Statement) Uma instrução SQL pode ser compilada(objeto PreparedStatement) Uma instrução SQL pode ser uma chamada para uma Stored Procedure(objeto CallableStatement)

12 Aplicativo JDBC O método executeQuery() é utilizado para a submissão de comandos de consulta ao BD(SELECT) Qdo o método executeQuery() é executado, um objeto ResultSet é retornado O ResultSet contém linhas de dados que são analisadas com o método next()

13 String getString(int indiceColuna) String getString(String nomeColuna)
Aplicativo JDBC O ResultSet contém linhas de dados que são analisadas com o método next() Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM Turma"); while(rs.next()) { System.out.println(rs.getString(1)); } O método next() Retorna um boolean Posiciona o cusor na próxima linha (inicialmente o cursor está antes da primeira linha String getString(int indiceColuna) String getString(String nomeColuna) getString, getInt, getDouble, etc.

14 Aplicativo JDBC As instruções SQL de atualização(INSERT e UPDATE) e exclusão (DELETE) retornam um número inteiro que denota o número de linhas afetadas Por exemplo: Statement stmt = con.createStatement(); int i = stmt.executeUpdate(”INSERT INTO Turma VALUES (\’001\’, \’Turma001\’) ");

15 Aplicativo JDBC Para essas instruções e também para a execução de comando DDL(CREATE, DROP, etc.), o método executeUpdate() é utilizado Por Exemplo: Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(”INSERT INTO Turma VALUES (\’001\’, \’Turma001\’) "); while(rs.next()) { System.out.println(rs.getString(1)); }

16 Statement pré-compilado Melhoria de performance
PrepareStatement Statement pré-compilado Melhoria de performance Utilização de parâmetros String sql = “SELECT * FROM Turma WHERE CodTurma =?”; PrepareStatement ps = con.prepareStatement(sql); ps.setString(1,”001”); ResultSet rs = ps.executeQuery();

17 Utilizado na chamada de stored procedures
CallableStatement Utilizado na chamada de stored procedures String proc = “{call cons_Turmas”; CallableStatement cs = con.prepareCal(proc); cs.execute();

18 Transações Corresponde a um grupo de operações de devem ser executadas de forma atômica. Para implementar uma transação deve-se Iniciar a transação Executar comandos Confirmar ou Desfazer a transação Utilizam-se os métodos da interface Connection: setAutoCommit (boolean autoCommit) autoCommit true (o commit é realizado automaticamente após o término de cada operação executada pelo Statement) commit() : transação com sucesso roolback(): falha na transação

19 Transações ... try{ con.setAutoCommint(false);
stmt.executeUpdate(...); con.commit(); catch (SQLException ex){ System.out.println(ex.getMessage()); con.rollback(); } catch (java.lang.Exception ex){ } //fim catch con.setAutoCommint(true);

20 Acesso ao BD - Exemplo ODBC-JDBC
O acesso a um banco de dados pode ser feito por meio do JDBC e da ponte JDBC-ODBC Precisa-se configurar uma fonte de dados ODBC O método getConnection() requer um nome de fonte de dados(DSN), ID do usuárioe senha para a fonte de dados ODBC O programa ODBC setup permite que se configure a fonte de dados

21 Tipos de drivers JDBC Tipo 1: Ponte JDBC-ODBC Tipo 2: Parte Java, parte código nativo Tipo 3: Servidor intemediário de acesso a dados Tipo 4: Puro Java

22 Tipo 1: Ponte JDBC-ODBC Aplicação Ponte ODBC JDBC/ODBC API JDBC Banco
de Dados

23 Tipo 1: Ponte JDBC-ODBC Acompanha o J2SE
Deve-se ter um driver ODBC disponível na máquina Faz acesso JDBC usando drivers ODBC Perde em performance

24 Tipo 2: Java-Nativo Aplicação API Driver JDBC Nativa API JDBC Banco
de Dados

25 Tipo 2: Java-Nativo Chamadas à API JDBC são convertidas em chamadas à API do BD Performance melhor que o do Tipo 1

26 Tipo 3: Servidor Intermediário
Aplicação API JDBC Servidor de drivers JDBC Driver JDBC Driver Nativo Banco de Dados

27 Tipo 3: Servidor Intermediário
Traduz chamadas JDBC para um protocolo de rede independente de BD O servidor intermediário traduz as mensagens para o protocolo nativo do BD O servidor pode se conectar com vários tipos de BD Servidor de Aplicações

28 Tipo 4: Puro Java Aplicação API JDBC Driver JDBC Banco de Dados

29 Tipo 4: Puro Java Performance melhor que as dos tipos anteriores
Chamadas à API JDBC são convertidas para o protocolo de rede usado pelo BD Drivers deste tipo são mais simples de usar e instalar Ex: thin -> Oracle


Carregar ppt "Linguagens de Programação Orientadas a Objetos"

Apresentações semelhantes


Anúncios Google