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

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

De 22 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.

Apresentações semelhantes


Apresentação em tema: "De 22 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula."— Transcrição da apresentação:

1 de 22 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 de 22 2 Acessando BD com JDBC l O JDBC - Java Database Connectivity l É uma API para acesso a SGBDs em Java l 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 l Através de JDBC pode-se enviar comandos SQL para o BD e processar os resultados

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

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

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

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

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

8 de 22 8 Classes JDBC l A classe superior na hierarquia é a DriverManager l O JDBC identifica um banco de dados com um URL: jdbc:odbc: :User= :PW= l DriverManager retorna um objeto Connection com o uso do método getConnection() l 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 de 22 9 Classes JDBC l As operações de conexão e acesso a banco devem ser realizadas em um bloco try...catch l Por exemplo: try{.... } catch (SQLException ex){ System.out.println(ex.getMessage()); } catch (java.lang.Exception ex){ System.out.println(ex.getMessage()); } //fim catch

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

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

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

13 de Aplicativo JDBC l 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)); } l O método next() Retorna um boolean Posiciona o cusor na próxima linha (inicialmente o cursor está antes da primeira linha l String getString(int indiceColuna) l String getString(String nomeColuna) l getString, getInt, getDouble, etc.

14 de Aplicativo JDBC l 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 l Por exemplo: Statement stmt = con.createStatement(); int i = stmt.executeUpdate( INSERT INTO Turma VALUES (\001\, \Turma001\) " );

15 de Aplicativo JDBC l Para essas instruções e também para a execução de comando DDL(CREATE, DROP, etc.), o método executeUpdate() é utilizado l 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 de PrepareStatement l Statement pré-compilado l Melhoria de performance l 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 de CallableStatement l Utilizado na chamada de stored procedures String proc = {call cons_Turmas; CallableStatement cs = con.prepareCal(proc); cs.execute();

18 de Transações l Corresponde a um grupo de operações de devem ser executadas de forma atômica. l Para implementar uma transação deve-se Iniciar a transação Executar comandos Confirmar ou Desfazer a transação l 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 de 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){ System.out.println(ex.getMessage()); } //fim catch con.setAutoCommint(true);...

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

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

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

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

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

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

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

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

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

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


Carregar ppt "De 22 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula."

Apresentações semelhantes


Anúncios Google