Jdbc, JAVA DATABASE CONNECTIVITY
-
Upload
raquelcarsi -
Category
Technology
-
view
5.513 -
download
9
description
Transcript of Jdbc, JAVA DATABASE CONNECTIVITY
![Page 1: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/1.jpg)
CONEXÃO JAVA - BANCO CONEXÃO JAVA - BANCO DE DADOSDE DADOS
RAQUEL, HEITOR, TIAGO, GEWTONRAQUEL, HEITOR, TIAGO, GEWTON
Instituição Federal do Rio Grande do Norte- www.cefetrn.br
![Page 2: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/2.jpg)
![Page 3: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/3.jpg)
JDBCJDBC
JAVA DATABASE CONNECTIVITYJAVA DATABASE CONNECTIVITY
![Page 4: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/4.jpg)
INTRODUÇÃOINTRODUÇÃO API JDBC possibilita ao programador de aplicações
Java abrir conexões com um SGBD, consultar e modificar algum BD, utilizando a linguagem SQL.
Características: Portabilidade API independente do Banco de Dados
![Page 5: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/5.jpg)
PADRÃO JDBC DE ACESSO A BASES DE DADOSPADRÃO JDBC DE ACESSO A BASES DE DADOS
API de acesso para executar comandos SQL Implementa as interfaces do pacote padrão
java.sql Envio para qualquer tipo de Banco de Dados
relacional Independente de API/Linguagem proprietária
dos fabricantes de SGBD (Microsoft, Oracle, Informix, …)
Uso de drivers específicos de fabricantes
![Page 6: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/6.jpg)
ARQUITETURA JDBCARQUITETURA JDBC
![Page 7: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/7.jpg)
ARQUITETURA JDBCARQUITETURA JDBC
Aplicações Java “conversam” com o Gerenciador de Drivers JDBC (DriverManager)
Este, por sua vez, se comunica com algum driver atualmente carregado.
Programador se preocupa apenas com API do gerenciador de drivers.
Drivers se ocupam da interface com o SGBD.
Ponte JDBC pode ser usada se não existir um driver para um determinado SGBD.
![Page 8: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/8.jpg)
Arquitetura de Desenvolvimento JDBCArquitetura de Desenvolvimento JDBC
![Page 9: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/9.jpg)
IMPLEMENTAÇÃOIMPLEMENTAÇÃO
O pacote JDBC vêm incluso com as distribuições Java
As classes que compões o kit JDBC estão nos pacotes java.sql e javax.sql.
Classes do pacote java.sql: Connection; Statement; PreparedStatement; CallableStatement; ResultSet; Driver
Deve-se obter um driver para o sistema de gerência de banco de dados a ser utilizado.
O URL a seguir fornece uma lista de drivers JDBC atualmente disponíveis:
http://industry.java.sun.com/products/jdbc/drivers
![Page 10: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/10.jpg)
CLASSES PRINCIPAISCLASSES PRINCIPAIS
java.sql.DriverManager Provê serviços básicos para gerenciar diversos drivers JDBC
java.sql.Connection Representa uma conexão estabelecida com o BD.
java.sql.Statement Representa sentenças onde são inseridos os comandos SQL Permite realizar todo o tratamento das consultas (select) e dos comandos de
atualizações (insert, delete, update)
java.sql.ResultSet Representa o conjunto de registros resultante de uma consulta. Permite manipular os resultados Java e SQL Colunas de um objeto ResultSet podem ser referenciadas por um número
posicional ou pelo nome da coluna do resultado. ResultSet rs.getString("Nome") ou ResultSet rs.getString(1)
![Page 11: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/11.jpg)
PASSO-A-PASSOPASSO-A-PASSO
• Carregar o Driver para a memória definir a URL de conexão com o repositório
• Estabelecer a conexão com o repositório
• Criar um objeto do tipo Statement
• Executar uma consulta (recuperar, atualizar, incluir)
• Com o resultado, executar um processamento
• Fechar a conexão
![Page 12: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/12.jpg)
DRIVERDRIVER
Implementa a interface Driver
Todo driver, ao ser carregado, se cadastra junto ao DriverManager através de um inicializador estático. Basta carregar a classe que o driver estará disponível para uso
Podemos fazer isso explicitamente :
void carregaDrivers() throws ClassNotFoundException {
Class.forName("org.postgresql.Driver");
...
}
![Page 13: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/13.jpg)
CARREGA DRIVECARREGA DRIVE
![Page 14: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/14.jpg)
OBTENDO CONEXÃOOBTENDO CONEXÃO
O argumento para o método getConnection tem um formato similar ao de uma URL jdbc:<subprotocolo>:<subnome> Jdbc: Protocolo: JDBC é o único valor possível subProtocolo: identifica um driver de BD Subnome: indica a localização e nome do BD a ser acessado.
Sintaxe é própria de cada driver Use o método:
String url ="jdbc:mysql://localhost:3306/Empresa";
DriverManager.getConnection(url, usuario, senha);
"jdbc:postgresql://serverName/mydatabase"
![Page 15: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/15.jpg)
ABRINDO CONEXÃOABRINDO CONEXÃO
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection com = DriverManager.getConnection("jdbc:odbc:Northwind","","");
...// Código de manipulação do BD
} catch (ClassNotFoundException e) {
System.out.println("Classe não Encontrada!");
} catch (SQLException e) {
System.out.println("Erro na Conexão!");
}
![Page 16: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/16.jpg)
CRIANDO COMANDOS SQLCRIANDO COMANDOS SQL
Classe Connection: implementa a interface Connection A partir de uma conexão, podemos:
criar comandos SQL (de diferentes formas) configurar características da conexão, como: controle de transações
Criando comandos SQL
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection("jdbc:postgresql:usuarios");
Statement stat = conn.createStatement();
// stat pode ser utilizado para enviar comandos
// SQL à base de dados
![Page 17: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/17.jpg)
CRIANDO COMANDOS SQL(CONT.)CRIANDO COMANDOS SQL(CONT.)
Métodos
void setAutoCommit(boolean ac) throws SQLException
void commit() throws SQLException
void rollback() throws SQLException
void close() throws SQLException
![Page 18: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/18.jpg)
ENVIANDO COMANDOS SQLENVIANDO COMANDOS SQL
Statement - envia texto SQL ao servidor
Comandos diretos Podem ser diretamente enviados à base através de um objeto que
implemente a interface Statement Comandos DDL, de atualização da base e de consulta são aceitos
Statement Um objeto da classe Statement é uma espécie de canal que envia
comandos SQL através de uma conexão O mesmo Statement pode enviar vários comandos Para se criar um Statement, é preciso ter criado anteriormente um
objeto Connection. A partir de uma conexão, pode-se criar diversos objetos Statement.
![Page 19: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/19.jpg)
ENVIANDO COMANDOS SQL(CONT)ENVIANDO COMANDOS SQL(CONT)
Métodos
ResultSet executeQuery(String sql)throws SQLException
int executeUpdate(String sql) throws SQLException
boolean execute(String sql) throws SQLException
ResultSet getResultSet() throws SQLException
int getUpdateCount() throws SQLException
boolean getMoreResults() throws SQLException
![Page 20: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/20.jpg)
EXECULTANDO STATEMENTEXECULTANDO STATEMENT
Há dois métodos da classe Statement para envio de comandos ao SGBD.
Modificações: executeUpdate Para comandos SQL “INSERT”, ”UPDATE”, ”DELETE”, ou outros que
alterem a base e não retornem dados Forma geral: executeUpdate(<comando>) Ex: stmt.executeUpdate("DELETE FROM Cliente"); Esse método retorna um inteiro: quantas linhas foram atingidas.
Consultas: executeQuery Para comandos “SELECT” ou outros que retornem dados Forma geral: stmt.executeQuery(<comando>); Esse método retorna um objeto da classe ResultSet Ex: rs = stmt.executeQuery("SELECT * FROM Cliente");
![Page 21: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/21.jpg)
MANIPULANDO UM OBJETO MANIPULANDO UM OBJETO RESULTSETRESULTSET
Métodos getXXX
Recuperam um dado de acordo com o tipo
Formas: rs.getXXX(<nome do campo>) ou rs.getXXX(<posição do campo >)
Exemplo:rs. getString(“nm_cliente”) ou rs.getString(2)
Método next(), previous() - retornam para o próximo registro no conjunto ou para o anterior. Retornam valor lógico.
Valor de retorno true indica que há outros registros.
Métodos first(), last() - posicionam o cursor no início ou no final do conjunto de dados.
Métodos isFirst(), isLast() - testam a posição do cursor; retorna valor lógico.
![Page 22: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/22.jpg)
EQUIVALÊNCIA DE TIPOS EQUIVALÊNCIA DE TIPOS JAVAXSQLJAVAXSQL
![Page 23: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/23.jpg)
OBTENÇÃO DO RESULTADOOBTENÇÃO DO RESULTADO Representado por um ResultSet Linhas são acessadas em sequência São invalidados quando seu Statement for:
Fechado; re-executado; usado para obter o próximo resultado de uma Série;
Métodos:public abstract boolean next() throws SQLExceptionpublic abstract void close() throws SQLExceptionpublic abstract boolean getBoolean(int columnIndex)throws SQLExceptionpublic abstract boolean getBoolean(String columnName)throws SQLException...public abstract InputStream getAsciiStream(int
columnIndex) throws SQLExceptionpublic abstract int findColumn(String columnName)
throws SQLException
![Page 24: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/24.jpg)
EXEMPLO DE CONSULTAEXEMPLO DE CONSULTA
import java.sql.*; import java.io.*; public class Consulta{
public static void main(String args[]) throws IOException{ String comando="SELECT * FROM FONES" ; try{ Connection con; Class.forName("com.ashna.jturbo.driver.Driver"); con=DriverManager.getConnection ("jdbc:JTurbo://rubi/javadb", "sa",""); System.out.println("Conectado OK"); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(comando); while (rs.next()) { System.out.println("Nome: "+rs.getString(1)+" Fone: "+rs.getString(2)); } st.close(); con.close(); } catch(SQLException e){ System.out.println("Erro no SQL!"); return; } catch(ClassNotFoundException e){ System.out.println("Driver não Encontrada!"); return; } System.in.read(); }
}
![Page 25: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/25.jpg)
EXEMPLO DE INSERÇÃOEXEMPLO DE INSERÇÃO
![Page 26: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/26.jpg)
FECHANDO A CONEXÃOFECHANDO A CONEXÃO
Uma conexão aberta custa caro para o sistema
Este recurso deve ser liberado e dependendo do repositório é esperado outros comandos para encerrar a conexão
Método: connection.close();
![Page 27: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/27.jpg)
CONCLUSÕESCONCLUSÕES
Novos padrões: JPA (Java Persistence API)- é um framework
utilizado na camada de persistência para o desenvolvedor ter uma maior produtividade, com impacto principal num modo para controlarmos a persistência dentro de Java. Pela primeira vez, nós, desenvolvedores temos um modo "padrão" para mapear nossos objetos para os do Banco de Dados.
![Page 28: Jdbc, JAVA DATABASE CONNECTIVITY](https://reader030.fdocuments.net/reader030/viewer/2022013115/55737801d8b42af4698b4b53/html5/thumbnails/28.jpg)
REFERÊNCIAS BIBLIOGRÁFICAS http://www.tecgraf.puc-rio.br/~ismael/Cursos/XJavaDatabase/aulas/1-JDBC/JavaDatabase_1-JDBC.pdf http://www.devmedia.com.br/articles/viewcomp.asp?comp=4590 http://www.cefetrn.br/~minora/jdbc/doku.php http://java.sun.com/javase/technologies/database/index.jsp