Carregar apresentação
A apresentação está carregando. Por favor, espere
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.