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

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

Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos

Apresentações semelhantes


Apresentação em tema: "Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos"— Transcrição da apresentação:

1 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC Compreender os conceitos básicos da utilização do acesso a banco de dados via JDBC

2 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC Conceitos; Arquitetura; Processo básico de utilização; Classes e interfaces JDBC; Exemplo prático;

3 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC JDBC- Java Database Connectivity É um conjunto de interfaces definidas no Java para construção de componentes de acesso a bancos de dados. Esse conjunto de interfaces que devem ser implementadas por componentes de acesso a um determinado banco de dados.

4 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC JDBC- Java Database Connectivity Com JDBC é possível construir uma aplicação Java para acesso a qualquer banco de dados SQL. JDBC é uma interface de nível de código: Código SQL é usado explicitamente dentro do código Java; O pacote java.sql consiste de um conjunto de classes e interfaces que permitem embutir código SQL em métodos

5 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC Arquitetura JBDC: Aplicação JAVA Interface JDBC Implementação JDBC.BANCO SQL-Server, MySql, entre outros. SGBD

6 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC Processo básico para utilizar o JDBC Carregar e registrar o driver JDBC junto ao Driver Manager; Configurar e obter uma conexão com o banco de dados; Preparar os dados para consulta (formatação, ordenação,...) e o próprio SQL; Executar a consulta; Obter e verificar os resultados; Tratar possíveis erros; Formatar a saída para o usuário; Ao finalizar a aplicação, fechar a conexão.

7 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - DriverManager e Driver A interface Driver é utilizada apenas pelas implementações de drivers JDBC: É preciso carregar a classe do driver na aplicação que irá utilizálo. Isto pode ser feito com Class.forName(): Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); A classe DriverManager manipula objetos do tipo Driver: Possui métodos para registrar drivers, removê-los ou listá-los;

8 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - DriverManager e Driver É usado para retornar Connection, que representa uma conexão a um banco de dados, a partir de uma URL JDBC recebida como parâmetro: Connection con = DriverManager.getConnection( "jdbc:odbc:aluguel","", ""); Nome do DSN registrado, se fizer conexão ODBC

9 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Connection : Representa uma conexão ao banco de dados, que é retornada pelo DriverManager na forma de um objeto. Sendo possíveis algumas operações: con.commit(); con.rollBack(); con.close();

10 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Statement: Oferece meios de passar instruções SQL para o sistema de banco de dados. Obtendo-se um objeto Connection, chamamos o seu método createStatement() para obter uma instância de uma classe que implementa a interface Statement: Statement stmt = con.createStatement(); A interface Statement é usada para executar comando SQL simples.

11 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Statement: Com um objeto do tipo Statement podemos utilizar os métodos execute, executeQuery e executeUpdate que são usados da seguinte maneira : stmt.execute( "CREATE TABLE produto(id_produto INT PRIMARY KEY, descricao CHAR(20), fabricante char(20)); ");

12 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Statement: int linhasModificadas = stmt.executeUpdate( " INSERT INTO produto (id_produto, descricao, fabricante) VALUES (1,‘PNEU',‘firestone’) "); O retorno do método indica o status da operação.

13 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Statement: Consultas que retornam dados são executadas usando o executeQuery: ResultSet rs = stmt.executeQuery("SELECT * FROM Produto");

14 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Comandos pré-compilados: O Statement pré-compilado que é mais eficiente quando várias consultas similares são enviadas com parâmetros diferentes Uma String com instrução SQL é preparada previamente, deixando-se "?" no lugar dos parâmetros. Parâmetros são inseridos em ordem, com setXXX() onde XXX é um tipo igual aos retornados pelos métodos de ResultSet.

15 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Comandos pré-compilados: String newSql = "INSERT INTO PRODUTO (nom_produto, des_produto, fornecedor) VALUES (?, ?, ?)"; PreparedStatement stmt1 = con.prepareStatement(newSql); stmt1.setString(1, "Monitor"); stmt1.setString(2,"Monitor LCD"); stmt1.setString(3, “SAMSUNG"); stmt1.executeUpdate();

16 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement ResultSet: É um cursor para os dados recebidos. Conforme demonstrado, o método executeQuery() retorna um objeto do tipo ResultSet; Com esse cursor recuperado, pode-se então navegar pelas linhas da tabela e recuperar as informações armazenadas nas colunas solicitadas na consulta. Alguns métodos para navegação são: Next(); previous(); First() e last().

17 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement ResultSet: Para obtenção dos dados são utilizados os seguintes métodos: getInt(); getString()... Ou seja, getXXX() onde XXXX é o tipo da informação recuperada.

18 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement ResultSet: Supondo que em uma tabela exista 3 atributos: A Tabela Produtos que foi mostrado anteriormente. Então usaremos os métodos getInt() e o getString() objetoReultset.getInt(“ id_produto ”) objetoReultset.getString(“ descricao ”) objetoReultset.getString(“ fabricante ”)

19 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement ResultSet: Os métodos getXXXX() possuem duas sobrecarga. Onde pode ser Passado como parâmetro o nome do atributo da tabela ou o número da ordem de criação do atributo (índice do atributo) objetoReultset.getInt(1) // Para o atributo id_produto objetoReultset.getString(2) // Para o atributo descricao objetoReultset.getString(3) // Para o atributo abricante

20 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Propriedades transacionais: Possibilita maior segurança na atualização dos dados. Temos que lançar a exceção ( throws SQLException ). Também fazer o tratamento de erro. connection.setAutoCommit(false); PreparedStatement pst = connection.prepareStatement( SuaQuery );.. pst.executeUpdate() //Várias alterações no BD.... connection.commit(); ou connection.rollback();

21 Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos (UFBA)(arleys.castro@gmail.com)arleys.castro@gmail.com JDBC - Connection, ResultSet e Statement Propriedades transacionais: String sql = "INSERT INTO clientes (NOME, ENDERECO, BAIRRO, CIDADE) VALUES (?, ?, ?, ?)"; try { connection.setAutoCommit(false); PreparedStatement pst = connection.prepareStatement( sql ); pst.setString(1, "Carlos Teste 1"); pst.setString(2,"Endereço de Carlos Teste 1"); pst.setString(3,"Bairro Carlos Teste 1"); pst.setString(4,"Cidade Carlos Teste 1"); pst.executeUpdate(); sql = "UPDATE clientes SET NOME=? WHERE Codigo=?"; pst = connection.prepareStatement( sql ); pst.setString(1, "Jorge"); pst.setInt(2, 4); pst.executeUpdate(); connection.commit(); pst.close(); } catch(SQLException e) { System.err.println ("\nError Menssage: " + e.getMessage()); connection.rollback(); } Faz duas alterações no banco de dados. Só então, caso não haja erros ele Confirma todas al alterações, de fato, no banco Caso ocorra algum erro ele desfaz as alterações, voltando ao estado, seguro, original


Carregar ppt "Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos"

Apresentações semelhantes


Anúncios Google