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

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

Prof. Alessandro J. de Souza

Apresentações semelhantes


Apresentação em tema: "Prof. Alessandro J. de Souza"— Transcrição da apresentação:

1 Prof. Alessandro J. de Souza
CENTRO FEDERAL DE EDUCAÇÃO TECNOLOGICA DO RN AULA 14 Fundamentos de JDBC Prof. Alessandro J. de Souza

2 JDBC JDBC é uma interface baseada em Java para acesso a bancos de dados através de SQL. O pacote java.sql consiste de um conjunto de classes e interfaces que permitem embutir código SQL em métodos. Com JDBC é possível construir uma aplicação Java para acesso a qualquer banco de dados SQL. Para usar JDBC é preciso ter um driver JDBC

3 Tipos de Driver JDBC Tipo 1: ponte ODBC-JDBC
O tipo 1 é um driver de ponte entre Java e ODBC. O driver de ponte mais conhecido é o fornecido pela Sun o JDBC-ODBC bridge. Tipo 2: solução com código nativo Usam uma API nativa. Esses drivers contém métodos Java implementados em C ou C++. Tipo 3: solução 100% Java no cliente O tipo 3 é um driver totalmente Java que se comunica com algum tipo de middleware que então se comunica com o banco de dados Tipo 4: solução 100% Java O tipo 4 é um driver totalmente Java que vai diretamente ao banco de dados

4 Tipos de Driver JDBC Fonte-

5 Como enviar consultas ao banco?
Carregar Driver JDBC; Conectar a fonte de dados; Executar declarações SQL;

6 Carregar Driver JDBC Carregar Driver JDBC
É preciso carregar a classe do driver na aplicação que irá utilizá-lo. Isto pode ser feito com Class.forName(): Exemplo: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Class.forName(“org.postgresql.Driver");

7 Conectar a fonte de dados
Para determinar qual driver será usado usa-se uma URL: jdbc:<subprotocolo>:<dsn> A aplicação usa o subprotocolo para identificar e selecionar o driver a ser instanciado. O dsn é o nome que o subprotocolo utilizará para localizar um determinado servidor ou base de dados. Sintaxe dependente do fabricante: jdbc:odbc: nome_fonte_de_dados jdbc:postgresql://maquina:porta/nome_fonte_de_dados A classe DriverManager manipula objetos do tipo Driver. Connection con = DriverManager.getConnection ("jdbc:odbc:banco",“usuário","senha")

8 Executar declaraões SQL
Existem três formas diferentes de executar declarações SQL: Statement - Oferece meios de passar instruções SQL para o sistema de bancos de dados. PreparedStatement – Declarações SQL semi-estáticas CallableStatement - para chamada de stored procedures Statement stmt = con.createStatement() PreparedStatement pstmt = con.prepareStatement(...); CallableStatement cstmt = con.prepareCall(...);

9 Exemplo de uso de Statement
stmt.execute("CREATE TABLE pessoas " + "(codigo INT PRIMARY KEY, " + " nome CHAR(20), " + " cidade CHAR(20));"); int linhasModificadas = stmt.executeUpdate("INSERT INTO pessoas " + "(codigo, nome, cidade) VALUES " + "(001, 'Carlos', 'natal')"); ResultSet cursor = stmt.executeQuery("SELECT nome, cidade " + " FROM pessoas " + " WHERE codigo = 001");

10 Exemplo de uso de PreparedStatement
Statement pré-compilado que é mais eficiente quando várias queries similares são enviadas com parâmetros diferentes String com instrução SQL é preparado previamente, deixando-se "?" no lugar dos parâmetros Parâmetros são inseridos em ordem, com setTipo(). String sql = "INSERT INTO pessoas (codigo, nome, cidade) VALUES(?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, 002); pstmt.setString(2, "Alessandro"); pstmt.setString(3, "João Pessoa"); pstmt.executeUpdate();

11 ResultSet O método executeQuery(), da interface Statement, retorna um objeto ResultSet. Pode-se navegar pelas linhas da tabela recuperar as informações armazenadas nas colunas Os métodos de navegação são next(): move uma linha para frente previous(): move uma linha para trás absolute(int n): move para alinha com número específico first(): move para o primeiro registro last(): move para o ultimo registro .... ResultSet rs = stmt.executeQuery(sql); While(rs.next()){ //processa dados ... }

12 Tipos Java / SQL e métodos de Acesso

13 Exemplo de ResultSet ResultSet rs =
stmt.executeQuery("SELECT * FROM pessoas"); while (rs.next()) { int cod = rs.getInt("codigo"); String nome = rs.getString("nome"); String cidade = rs.getString("cidade"); // faça algo com os valores obtidos na consulta... }

14 Método Close() e Exceções
Após o uso, os objetos Connection, Statement e ResultSet devem ser fechados através do método close(): conexão.close(); statement.close(); resultset.close(); A exceção SQLException é a principal exceção a ser observada em aplicações JDBC Try{ //comando de acesso ao banco }cacth (SQLException ex) { //tratamento de exceções }finally{ //fechamento de conexões }

15 Exemplo de Persistência
public class Banco { public static Connection conn = null; public static Connection getConexao(){ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:testemy","SA",""); }catch (ClassNotFoundException exc) { System.out.println("Error ao carregar o Driver"); } catch (SQLException ex) { System.out.println("Probelmas ao abrir a conexao com o banco"); } return conn;

16 Exemplo de Persistência
public void salva(Pessoa pessoa) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = Banco.getConexao(); stmt = conn.prepareStatement("insert into tabela1 (nome,telefone, endereco) values (?, ?, ? )"); stmt.setString(1, pessoa.getNome().trim()); stmt.setString(2, pessoa.getTelefone().trim()); stmt.setString(3, pessoa.getEndereco().trim()); stmt.executeUpdate(); } catch (SQLException ex) { System.out.println("Error fatal"); } finally { Banco.closeConexao(conn, rs, stmt); }

17 Transações Permite a execução atômica de comandos enviados ao banco.
Implementada através dos métodos de Connection commit() – aplica mudanças no banco con.commit(); rollback() – desfaz operações realizadas até o momento con.rollback(); setAutoCommit(boolean autoCommit): default é true. con.setAutoCommit(false);

18 Construindo uma Aplicação web com acesso a banco de dados


Carregar ppt "Prof. Alessandro J. de Souza"

Apresentações semelhantes


Anúncios Google