SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010
Java JDBC
Aplicação Java com Acesso a um SGBD
Ricardo Terra
rterrabh [at] gmail.com
Java JDBC 1
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010
CV
Java JDBC 2
Nome: Ricardo Terra
Email: rterrabh [at] gmail.com
www: ricardoterra.com.br
Twitter: rterrabh
Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo),
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos)
Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 3
Conexão Java com SBGD
n  Não faria sentido um SGBD se não existisse a conexão entre uma
linguagem de programação e um banco de dados
q  Em Java, existe o Java Database Connectivity (JDBC)
n  JDBC é uma biblioteca vinculada a API da linguagem de
programação Java que define como um cliente pode acessar um
banco de dados. Inclusive provê métodos para consulta e
atualização
n  JDBC é direcionado a banco de dados relacionais
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 4
JDBC
n  A API JDBC já está vinculada ao JDK do Java, porém é necessário
baixar as API específicas para o Oracle
q  São conhecidas como connectors
n  O connector Oracle pode ser facilmente baixado em:
q  http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
n  O connector MySql pode ser facilmente baixado em:
q  http://dev.mysql.com/downloads/connector/j/
n  O connector é a implementação das interfaces JDBC. Ela possui a
extensão JAR e deve ser adicionada ao "Build Path" do projeto que a
utilizará, conforme demonstrado no próximo slide
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 5
Importando Bibliotecas Externas...
n  Clique com o botão direito no projeto, vá em "Build Path" e depois em "Add External Archives..."
Java JDBC
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 6
Importando Bibliotecas Externas...
n  Selecione a biblioteca (extensão JAR) desejada onde ela estiver
Java JDBC
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 7
Importando Bibliotecas Externas...
n  Observe que a biblioteca aparecerá em "Referenced Libraries"
Java JDBC
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 8
Conexão Java com SGBD
n  Para exemplos, utilizaremos o seguinte modelo relacional:
CONTATO (cpf, nome, sexo, data_nascimento, telefone)!
! !dom(cpf) = numérico(11) NN!
! !dom(nome) = alfabético(60) NN, com nome único!
! !dom(sexo) = char(1) NN, pode ser 'M' ou 'F'!
! !dom(data_nascimento) = data NN!
! !dom(telefone) = numérico(10) NN!
q  Por didática, todos os campos serão não-nulos (not null)
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 9
Conexão Java com Oracle
n  Criação do modelo relacional proposto no Oracle:
create table CONTATO(
CPF number(11) not null,
NOME varchar2(60) not null,
SEXO char(1) not null,
DATA_NASCIMENTO date not null,
TELEFONE number(10) not null,
constraint PK_CONTATO primary key (CPF),
constraint UN_NOME_CONTATO unique (NOME),
constraint CK_SEXO_CONTATO check (SEXO in ('M','F'))
);
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 10
Conexão Java com MySql
n  Criação do modelo relacional proposto no MySql:
create table CONTATO(
CPF bigint not null,
NOME varchar(60) not null,
SEXO char(1) not null,
DATA_NASCIMENTO date not null,
TELEFONE int not null,
constraint PK_CONTATO primary key (CPF),
constraint UN_NOME_CONTATO unique (NOME),
constraint CK_SEXO_CONTATO check (SEXO in ('M','F'))
);
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 11
JDBC
n  As classes e interfaces JDBC estão contidas no pacote java.sql!
n  Veremos nos próximos slides a classe e as interfaces deste pacote.
q  A única classe é a DriverManager que é responsável pelo
gerenciamento de conectores (connectors ou drivers)
q  Todos os outros tipos são interfaces, pois a implementação deles
encontra-se na biblioteca (connector) que foi adicionado ao projeto e
que deve ser registrado pela classe DriverManager
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 12
JDBC
n  Arquitetura JDBC:
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 13
JDBC – java.sql.DriverManager!
n  DriverManager é a classe responsável por:
q  Registrar o connector
q  Abrir conexão
n  Os principais métodos são:
q  registerDriver(driver: Driver) : void!
n  Utilizado para o registro de um connector (ou driver). É a primeira atividade a ser
realizada
DriverManager.registerDriver(!
! !new oracle.jdbc.driver.OracleDriver());!
q  getConnection(url: String, user : String, pword: String) : Connection!
n  Utilizado para criar uma conexão a um SGDB. Deve ser passado a url de acesso ao
SGBD, o nome e a senha do usuário
Connection conn = DriverManager.getConnection(!
! "jdbc:oracle:thin:@localhost:1521:xe","user”,"pw");!
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 14
JDBC – java.sql.Connection!
n  Connection é a interface responsável por:
q  Realizar commit ou rollback de uma transação
q  Criar instruções
n  Qualquer DML ou DDL, como insert, select, create view etc
n  Os principais métodos são:
q  setAutoCommit(autoCommit: boolean) : void!
n  Configura se a conexão será "auto-comitada" ou não
q  conn.setAutoCommit(false);
q  commit() : void!
n  Realiza o commit da conexão
q  conn.commit();!
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 15
JDBC – java.sql.Connection
q  rollback() : void!
n  Realiza o rollback da conexão
q  conn.rollback();
q  createStatement() : java.sql.Statement!
n  Cria uma instrução para que seja enviado algum SQL ao banco de dados
q  Statement st = conn.createStatement();!
q  prepareStatement(sql : String) : java.sql.PreparedStatement!
n  Cria uma instrução parametrizada para que seja enviado algum SQL ao
banco de dados
n  PreparedStatement ps = 

conn.prepareStatement("select * from CONTATO where CPF = ?");!
q  close() : void!
n  Realiza o encerramento da conexão. Sempre ao abrir uma conexão, a
mesma deverá ser encerrada
n  conn.close();!
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 16
JDBC – java.sql.Statement
n  Statement é a interface responsável por:
q  Executar instruções
q  Realizar consultas
n  Os principais métodos são:
q  executeUpdate(sql : String) : int!
n  Realiza a execução de um insert, update, delete ou qualquer instrução SQL
que não retorne nada, por exemplo, instruções DDL
q  st.executeUpdate("delete from CONTATO where SEXO='M'");
q  executeQuery(sql : String) : java.sql.ResultSet!
n  Realiza uma consulta
q  ResultSet rs = st.executeQuery("select * from CONTATO");
q  close() : void!
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 17
JDBC – java.sql.PreparedStatement
n  PreparedStatement é a interface com as mesmas
responsabilidades da Statement, porém possui métodos para
inserir os parâmetros
n  Alguns destes métodos de inserção de parâmetros:
q  setInt(paramIndex : int, x : int) : void!
q  setLong(paramIndex : int, x : long) : void!
q  setString(paramIndex : int, x : String) : void!
q  setDate(paramIndex : int, x : java.sql.Date) : void!
q  setNull(parameterIndex : int, sqlType : int) : void!
n  Ex.: ps.setNull(5, java.sql.Types.NULL);
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 18
JDBC – java.sql.PreparedStatement
n  Exemplo:
q  ...!
!PreparedStatement ps = !
! !conn.prepareStatement(!
! ! ! !"insert into CONTATO values (?,?,?,?,?)");!
!!
!ps.setLong(1, 12345678903L);!
!ps.setString(2, "Marcos");!
!ps.setString(3, "M");!
!ps.setDate(4, new java.sql.Date(500000000000L));!
!ps.setLong(5, 3134181010L);!
!
!ps.executeUpdate();!
!...!
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 19
JDBC – java.sql.ResultSet
n  ResultSet é a interface responsável por:
q  Manipular o conjunto de resultados de uma consulta
n  Os principais métodos são:
q  next() : boolean!
n  Move o cursor para a próxima posição do conjunto de resultados, retornando um
booleano dizendo se a próxima posição é válida ou não
q  rs.next();
q  close() : void!
q  Métodos de recuperação de valores das colunas que será abordado no próximo
slide
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 20
JDBC – java.sql.ResultSet
n  Possui métodos para recuperação dos valores das colunas:
q  Os valores poderão ser recuperados pelo nome da coluna ou mesmo
pela posição em que a coluna se encontra no resultado
n  Alguns destes métodos de recuperação de valores das colunas:
q  getInt( [columnName : String | columnIndex : int ] ) : int!
q  getLong( [columnName : String | columnIndex : int ] ) : long!
q  getString( [columnName : String | columnIndex : int ] ) : String!
q  getDate([columnName : String | columnIndex : int]) : java.sql.Date!
n  Somente a data
q  getTimestamp([columnName : String | columnIndex : int]) : java.sql.Date!
n  Data e hora
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 21
Utilizando JDBC
n  A programação usando JDBC pode ser descrita em um fluxo de
atividades que será descrita em Diagrama de Atividade da UML no
próximo slide
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 22
Utilizando JDBC
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 23
JDBC - Exemplos
n  Os slides a seguir apresentam alguns exemplos da utilização do
JDBC em um SGBD MySql
n  Os primeiros três exemplos estão focados na utilização, ignorando
completamente qualquer exceção que possa ocorrer
n  O último exemplo apresenta um tratamento de exceção adequado
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 24
Exemplos – Utilizando Instrução Simples
public static void insert() throws SQLException {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/dbexemplo", "root", "root");
conn.setAutoCommit(false);
Statement st = conn.createStatement();
st.executeUpdate(
"insert into CONTATO values
(12345678903,'Marcos','M',to_date('04/11/1985','dd/MM/yyyy'),3132501111)");
st.close();
conn.commit();
conn.close();
}
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 25
Exemplos – Utilizando Instrução Preparada
public static void insertPreparado() throws SQLException {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/dbexemplo", "root", "root");
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement(
"update CONTATO set NOME = ?, SEXO = ?, DATA_NASCIMENTO = ?, TELEFONE = ?" +
"where CPF = ?");
ps.setString(1, "Carla");
ps.setString(2, "F");
ps.setDate(3, new java.sql.Date(500000000000L));
ps.setLong(4, 3132501111L);
ps.setLong(5, 12345678904L);
ps.executeUpdate();
ps.close();
conn.commit();
conn.close();
}
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 26
Exemplos – Conjunto de Resultados
public static void select() throws SQLException {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/dbexemplo", "root", "root");
conn.setAutoCommit(false);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from CONTATO");
while (rs.next()) {
System.out.println("CPF: " + rs.getLong("CPF"));
System.out.println("NOME: " + rs.getString("NOME"));
System.out.println("SEXO: " + rs.getString("SEXO"));
System.out.println("DATA DE NASCIMENTO: " + rs.getDate("DATA_NASCIMENTO"));
System.out.println("TELEFONE: " + rs.getLong("TELEFONE"));
System.out.println("========================================");
}
rs.close();
st.close();
conn.commit();
conn.close();
}
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 27
Exemplos – Bloco Transacional
public static void blocoTransacional() {
Connection conn = null;
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/dbexemplo", "root", "root");
conn.setAutoCommit(false);
/* AQUI VEM O CÓDIGO EFETIVO */
conn.commit(); // realiza commit
} catch (SQLException e) {
System.out.println("Ocorreu uma exceção de SQL. Causa: " + e.getMessage());
if (conn != null) { // se a conexão estiver aberta
try {
conn.rollback(); // realiza rollback
} catch (SQLException e1) {
System.out.println("Exceção ao realizar rollback. Causa: " + e1.getMessage());
}
}
} finally {
if (conn != null) { // se a conexão estiver aberta
try {
conn.close();
} catch (SQLException e) {
System.out.println("Exceção ao fechar a conexão. Causa: " + e.getMessage());
}
}
}
}
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 28
Exemplos – Bloco Transacional
public static void blocoTransacional() {
Connection conn = null;
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver() ());
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/dbexemplo", "root", "root");
conn.setAutoCommit(false);
/* AQUI VEM O CÓDIGO EFETIVO */
conn.commit(); // realiza commit
} catch (SQLException e) {
System.out.println("Ocorreu uma exceção de SQL. Causa: " + e.getMessage());
if (conn != null) { // se a conexão estiver aberta
try {
conn.rollback(); // realiza rollback
} catch (SQLException e1) {
System.out.println("Exceção ao realizar rollback. Causa: " + e1.getMessage());
}
}
} finally {
if (conn != null) { // se a conexão estiver aberta
try {
conn.close();
} catch (SQLException e) {
System.out.println("Exceção ao fechar a conexão. Causa: " + e.getMessage());
}
}
}
}
PreparedStatement ps =
conn.prepareStatement(
"insert into CONTATO values (?,?,?,?,?)");
ps.setLong(1, 12345678905L);
ps.setString(2, "Clodovil");
ps.setString(3, "I");
ps.setDate(4, new java.sql.Date(500000000000L));
ps.setLong(5, 3132501111L);
ps.executeUpdate();
ps.close();
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 29
Importante
n  Prefira a utilização de transações.
q  Isto é, opte por conn.setAutoCommit(false)!
n  Encerre tudo que tiver sido aberto.
q  Invoque o método close() de conexões, instruções e conjunto de
resultados
n  Sempre faça o acesso a um banco de dados utilizando um tratamento
de exceção adequado
q  Isto é, fazer rollback em caso de erro, fechar sempre a conexão
independente de sucesso ou falha na transação etc
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010
Desenvolvendo uma Aplicação Completa
n  Com toda a teoria absorvida e entendida, vamos agora criar uma
aplicação Java completa com acesso à uma base de dados
n  Para isso, utilizaremos:
q  Eclipse
q  Oracle XE ou MySql
q  Connector para Oracle ou MySql
q  Biblioteca TerraUtil!
n  Disponível em: www.ricardoterra.com.br/palestras
n  A aplicação a ser desenvolvida será explicada nos próximo slides
Java JDBC 30
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010
Desenvolvendo uma Aplicação Completa
n  Inicialmente, o usuário poderá escolher dentre uma das opções
abaixo. Cada opção será implementada em um método específico
========================!
CADASTRO DE CONTATOS !
========================!
1 – SALVAR!
2 – ATUALIZAR!
3 – EXCLUIR!
4 – PESQUISAR!
5 – LISTAR!
6 – ENCERRAR!
 !
DIGITE A OPÇÃO DESEJADA: !
Java JDBC 31
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010
Desenvolvendo uma Aplicação Completa
1.  Salvar
q  Pedirá ao usuário todas as informações do contato e gravará no SGBD
q  Retornará ao menu de opções
2.  Atualizar
q  Pedirá ao o usuário para digitar o cpf do contato
n  Caso exista, pedirá todas as informações do contato novamente – com a
exceção do cpf – e atualizará no SGBD. Caso não exista, isso deverá ser
avisado ao usuário
q  Retornará ao menu de opções
3.  Excluir
q  Pedirá para o usuário digitar o número da matrícula
n  Caso exista, excluir-se-á e avisará ao usuário que a exclusão foi efetuada
com sucesso. Caso não exista, isto deverá ser avisado ao usuário
q  Retornará ao menu de opções
Java JDBC 32
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010
Desenvolvendo uma Aplicação Completa
4.  Pesquisar
q  Pedirá para o usuário digitar o cpf do contato
q  Caso exista, irá exibir as informações do contato. Caso não exista, isto
deverá ser avisado ao usuário
q  Retornará ao menu de opções
5.  Listar
q  Se existir algum contato, exibirá as informações de todos. Caso não
exista nenhum, isso deverá ser avisado ao usuário
q  Retornará ao menu de opções
6.  Encerrar
q  Deverá encerrar o aplicativo
Java JDBC 33
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010
Desenvolvendo uma Aplicação Completa
n  Teremos uma classe do tipo Contato!
n  Teremos uma classe de busca de conexão (DBLocator)
n  Teremos um ContatoDAO!
n  Teremos a classe Aplicacao!
q  que fará toda a interação com o usuário através da biblioteca TerraUtil!
Java JDBC 34
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 35
Dúvidas?
???
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 36
Obrigado!
Ricardo Terra
rterrabh [at] gmail.com
Apresentação e projeto Java disponíveis em:
www.ricardoterra.com.br/palestras
Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 37
Referência Bibliográfica
n  DEITEL, H. M; DEITEL, P. J. Java, como programar. 6 ed. São Paulo:
Prentice-Hall, 2005.
n  DAWES, Chip; THOMAS, Biju. OCA/OCP: Introduction to Oracle9i™
SQL. São Francisco: Sibex, 2002.

Mais conteúdo relacionado

Mais procurados

Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4Rogério Moraes de Carvalho
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - BrazilStephen Chin
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Introdução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoIntrodução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoBruno Lopes
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)Mario Sergio
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 
Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)Fabrício Catae
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Claudio Martins
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5Rogério Moraes de Carvalho
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Pablo Dall'Oglio
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Frederico Maia Arantes
 

Mais procurados (20)

Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4Microsoft Community Launch 2010: .NET Framework 4
Microsoft Community Launch 2010: .NET Framework 4
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Introdução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderosoIntrodução a Grails: Um framework veloz e poderoso
Introdução a Grails: Um framework veloz e poderoso
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 
Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Java Web, o Tutorial
Java Web, o TutorialJava Web, o Tutorial
Java Web, o Tutorial
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
Introdução ao C#
Introdução ao C#Introdução ao C#
Introdução ao C#
 
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
TDC 2012 Goiânia: Trilha .NET - Novidades do .NET Framework 4.5
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
 

Semelhante a Java JDBC: Aplicação Java que acessa um SGDB

Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáZarathon Maia
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBCEduardo Mendes
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 
Java Sql jdbc
Java Sql jdbcJava Sql jdbc
Java Sql jdbcldanielts
 
Java database connectivity jdbc
Java database connectivity   jdbcJava database connectivity   jdbc
Java database connectivity jdbcDinarte Filho
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EELoiane Groner
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivityffeitosa
 
Trabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de ProgramaçãoTrabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de Programaçãocarlosveiga
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java IIIVerônica Veiga
 

Semelhante a Java JDBC: Aplicação Java que acessa um SGDB (20)

Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
Compweek
CompweekCompweek
Compweek
 
Java13
Java13Java13
Java13
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBC
 
Introdução ao JDBC - BarreirasJUG
Introdução ao JDBC - BarreirasJUGIntrodução ao JDBC - BarreirasJUG
Introdução ao JDBC - BarreirasJUG
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Jdbc
JdbcJdbc
Jdbc
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
JDBC
JDBCJDBC
JDBC
 
Java Sql jdbc
Java Sql jdbcJava Sql jdbc
Java Sql jdbc
 
Java database connectivity jdbc
Java database connectivity   jdbcJava database connectivity   jdbc
Java database connectivity jdbc
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
 
Trabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de ProgramaçãoTrabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de Programação
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Usando Java 8 no Android
Usando Java 8 no AndroidUsando Java 8 no Android
Usando Java 8 no Android
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Aula1
Aula1Aula1
Aula1
 

Mais de Ricardo Terra

Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesRicardo Terra
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POCRicardo Terra
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?Ricardo Terra
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsRicardo Terra
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de PadrõesRicardo Terra
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da InternetRicardo Terra
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a InternetRicardo Terra
 
Software Architecture
Software ArchitectureSoftware Architecture
Software ArchitectureRicardo Terra
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Ricardo Terra
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de ProgramaçãoRicardo Terra
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTRicardo Terra
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Ricardo Terra
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de CódigoRicardo Terra
 

Mais de Ricardo Terra (20)

Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Análise Estática de Código: Aplicações
Análise Estática de Código: AplicaçõesAnálise Estática de Código: Aplicações
Análise Estática de Código: Aplicações
 
Engenharia de Software: POC
Engenharia de Software: POCEngenharia de Software: POC
Engenharia de Software: POC
 
Which Programming Language is the best one?
Which Programming Language is the best one?Which Programming Language is the best one?
Which Programming Language is the best one?
 
Refactoring
RefactoringRefactoring
Refactoring
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
English---and LaTeX---Writing Tips
English---and LaTeX---Writing TipsEnglish---and LaTeX---Writing Tips
English---and LaTeX---Writing Tips
 
Casamento de Padrões
Casamento de PadrõesCasamento de Padrões
Casamento de Padrões
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Segurança da Internet
Segurança da InternetSegurança da Internet
Segurança da Internet
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Aula Zero
Aula ZeroAula Zero
Aula Zero
 
Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)Apostila Tecnologia da Informação (TI)
Apostila Tecnologia da Informação (TI)
 
Apostila Lógica de Programação
Apostila Lógica de ProgramaçãoApostila Lógica de Programação
Apostila Lógica de Programação
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
 
Apostila UML
Apostila UMLApostila UML
Apostila UML
 
Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)Apostila Modelo ER (Entidade Relacionamento)
Apostila Modelo ER (Entidade Relacionamento)
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de Código
 

Último

Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxedelon1
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 

Último (20)

Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 

Java JDBC: Aplicação Java que acessa um SGDB

  • 1. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 Java JDBC Aplicação Java com Acesso a um SGBD Ricardo Terra rterrabh [at] gmail.com Java JDBC 1
  • 2. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 CV Java JDBC 2 Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868 Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1) Background Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos) Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
  • 3. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 3 Conexão Java com SBGD n  Não faria sentido um SGBD se não existisse a conexão entre uma linguagem de programação e um banco de dados q  Em Java, existe o Java Database Connectivity (JDBC) n  JDBC é uma biblioteca vinculada a API da linguagem de programação Java que define como um cliente pode acessar um banco de dados. Inclusive provê métodos para consulta e atualização n  JDBC é direcionado a banco de dados relacionais
  • 4. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 4 JDBC n  A API JDBC já está vinculada ao JDK do Java, porém é necessário baixar as API específicas para o Oracle q  São conhecidas como connectors n  O connector Oracle pode ser facilmente baixado em: q  http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html n  O connector MySql pode ser facilmente baixado em: q  http://dev.mysql.com/downloads/connector/j/ n  O connector é a implementação das interfaces JDBC. Ela possui a extensão JAR e deve ser adicionada ao "Build Path" do projeto que a utilizará, conforme demonstrado no próximo slide
  • 5. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 5 Importando Bibliotecas Externas... n  Clique com o botão direito no projeto, vá em "Build Path" e depois em "Add External Archives..." Java JDBC
  • 6. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 6 Importando Bibliotecas Externas... n  Selecione a biblioteca (extensão JAR) desejada onde ela estiver Java JDBC
  • 7. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 7 Importando Bibliotecas Externas... n  Observe que a biblioteca aparecerá em "Referenced Libraries" Java JDBC
  • 8. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 8 Conexão Java com SGBD n  Para exemplos, utilizaremos o seguinte modelo relacional: CONTATO (cpf, nome, sexo, data_nascimento, telefone)! ! !dom(cpf) = numérico(11) NN! ! !dom(nome) = alfabético(60) NN, com nome único! ! !dom(sexo) = char(1) NN, pode ser 'M' ou 'F'! ! !dom(data_nascimento) = data NN! ! !dom(telefone) = numérico(10) NN! q  Por didática, todos os campos serão não-nulos (not null)
  • 9. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 9 Conexão Java com Oracle n  Criação do modelo relacional proposto no Oracle: create table CONTATO( CPF number(11) not null, NOME varchar2(60) not null, SEXO char(1) not null, DATA_NASCIMENTO date not null, TELEFONE number(10) not null, constraint PK_CONTATO primary key (CPF), constraint UN_NOME_CONTATO unique (NOME), constraint CK_SEXO_CONTATO check (SEXO in ('M','F')) );
  • 10. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 10 Conexão Java com MySql n  Criação do modelo relacional proposto no MySql: create table CONTATO( CPF bigint not null, NOME varchar(60) not null, SEXO char(1) not null, DATA_NASCIMENTO date not null, TELEFONE int not null, constraint PK_CONTATO primary key (CPF), constraint UN_NOME_CONTATO unique (NOME), constraint CK_SEXO_CONTATO check (SEXO in ('M','F')) );
  • 11. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 11 JDBC n  As classes e interfaces JDBC estão contidas no pacote java.sql! n  Veremos nos próximos slides a classe e as interfaces deste pacote. q  A única classe é a DriverManager que é responsável pelo gerenciamento de conectores (connectors ou drivers) q  Todos os outros tipos são interfaces, pois a implementação deles encontra-se na biblioteca (connector) que foi adicionado ao projeto e que deve ser registrado pela classe DriverManager
  • 12. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 12 JDBC n  Arquitetura JDBC:
  • 13. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 13 JDBC – java.sql.DriverManager! n  DriverManager é a classe responsável por: q  Registrar o connector q  Abrir conexão n  Os principais métodos são: q  registerDriver(driver: Driver) : void! n  Utilizado para o registro de um connector (ou driver). É a primeira atividade a ser realizada DriverManager.registerDriver(! ! !new oracle.jdbc.driver.OracleDriver());! q  getConnection(url: String, user : String, pword: String) : Connection! n  Utilizado para criar uma conexão a um SGDB. Deve ser passado a url de acesso ao SGBD, o nome e a senha do usuário Connection conn = DriverManager.getConnection(! ! "jdbc:oracle:thin:@localhost:1521:xe","user”,"pw");!
  • 14. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 14 JDBC – java.sql.Connection! n  Connection é a interface responsável por: q  Realizar commit ou rollback de uma transação q  Criar instruções n  Qualquer DML ou DDL, como insert, select, create view etc n  Os principais métodos são: q  setAutoCommit(autoCommit: boolean) : void! n  Configura se a conexão será "auto-comitada" ou não q  conn.setAutoCommit(false); q  commit() : void! n  Realiza o commit da conexão q  conn.commit();!
  • 15. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 15 JDBC – java.sql.Connection q  rollback() : void! n  Realiza o rollback da conexão q  conn.rollback(); q  createStatement() : java.sql.Statement! n  Cria uma instrução para que seja enviado algum SQL ao banco de dados q  Statement st = conn.createStatement();! q  prepareStatement(sql : String) : java.sql.PreparedStatement! n  Cria uma instrução parametrizada para que seja enviado algum SQL ao banco de dados n  PreparedStatement ps = 
 conn.prepareStatement("select * from CONTATO where CPF = ?");! q  close() : void! n  Realiza o encerramento da conexão. Sempre ao abrir uma conexão, a mesma deverá ser encerrada n  conn.close();!
  • 16. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 16 JDBC – java.sql.Statement n  Statement é a interface responsável por: q  Executar instruções q  Realizar consultas n  Os principais métodos são: q  executeUpdate(sql : String) : int! n  Realiza a execução de um insert, update, delete ou qualquer instrução SQL que não retorne nada, por exemplo, instruções DDL q  st.executeUpdate("delete from CONTATO where SEXO='M'"); q  executeQuery(sql : String) : java.sql.ResultSet! n  Realiza uma consulta q  ResultSet rs = st.executeQuery("select * from CONTATO"); q  close() : void!
  • 17. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 17 JDBC – java.sql.PreparedStatement n  PreparedStatement é a interface com as mesmas responsabilidades da Statement, porém possui métodos para inserir os parâmetros n  Alguns destes métodos de inserção de parâmetros: q  setInt(paramIndex : int, x : int) : void! q  setLong(paramIndex : int, x : long) : void! q  setString(paramIndex : int, x : String) : void! q  setDate(paramIndex : int, x : java.sql.Date) : void! q  setNull(parameterIndex : int, sqlType : int) : void! n  Ex.: ps.setNull(5, java.sql.Types.NULL);
  • 18. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 18 JDBC – java.sql.PreparedStatement n  Exemplo: q  ...! !PreparedStatement ps = ! ! !conn.prepareStatement(! ! ! ! !"insert into CONTATO values (?,?,?,?,?)");! !! !ps.setLong(1, 12345678903L);! !ps.setString(2, "Marcos");! !ps.setString(3, "M");! !ps.setDate(4, new java.sql.Date(500000000000L));! !ps.setLong(5, 3134181010L);! ! !ps.executeUpdate();! !...!
  • 19. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 19 JDBC – java.sql.ResultSet n  ResultSet é a interface responsável por: q  Manipular o conjunto de resultados de uma consulta n  Os principais métodos são: q  next() : boolean! n  Move o cursor para a próxima posição do conjunto de resultados, retornando um booleano dizendo se a próxima posição é válida ou não q  rs.next(); q  close() : void! q  Métodos de recuperação de valores das colunas que será abordado no próximo slide
  • 20. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 20 JDBC – java.sql.ResultSet n  Possui métodos para recuperação dos valores das colunas: q  Os valores poderão ser recuperados pelo nome da coluna ou mesmo pela posição em que a coluna se encontra no resultado n  Alguns destes métodos de recuperação de valores das colunas: q  getInt( [columnName : String | columnIndex : int ] ) : int! q  getLong( [columnName : String | columnIndex : int ] ) : long! q  getString( [columnName : String | columnIndex : int ] ) : String! q  getDate([columnName : String | columnIndex : int]) : java.sql.Date! n  Somente a data q  getTimestamp([columnName : String | columnIndex : int]) : java.sql.Date! n  Data e hora
  • 21. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 21 Utilizando JDBC n  A programação usando JDBC pode ser descrita em um fluxo de atividades que será descrita em Diagrama de Atividade da UML no próximo slide
  • 22. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 22 Utilizando JDBC
  • 23. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 23 JDBC - Exemplos n  Os slides a seguir apresentam alguns exemplos da utilização do JDBC em um SGBD MySql n  Os primeiros três exemplos estão focados na utilização, ignorando completamente qualquer exceção que possa ocorrer n  O último exemplo apresenta um tratamento de exceção adequado
  • 24. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 24 Exemplos – Utilizando Instrução Simples public static void insert() throws SQLException { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/dbexemplo", "root", "root"); conn.setAutoCommit(false); Statement st = conn.createStatement(); st.executeUpdate( "insert into CONTATO values (12345678903,'Marcos','M',to_date('04/11/1985','dd/MM/yyyy'),3132501111)"); st.close(); conn.commit(); conn.close(); }
  • 25. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 25 Exemplos – Utilizando Instrução Preparada public static void insertPreparado() throws SQLException { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/dbexemplo", "root", "root"); conn.setAutoCommit(false); PreparedStatement ps = conn.prepareStatement( "update CONTATO set NOME = ?, SEXO = ?, DATA_NASCIMENTO = ?, TELEFONE = ?" + "where CPF = ?"); ps.setString(1, "Carla"); ps.setString(2, "F"); ps.setDate(3, new java.sql.Date(500000000000L)); ps.setLong(4, 3132501111L); ps.setLong(5, 12345678904L); ps.executeUpdate(); ps.close(); conn.commit(); conn.close(); }
  • 26. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 26 Exemplos – Conjunto de Resultados public static void select() throws SQLException { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/dbexemplo", "root", "root"); conn.setAutoCommit(false); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from CONTATO"); while (rs.next()) { System.out.println("CPF: " + rs.getLong("CPF")); System.out.println("NOME: " + rs.getString("NOME")); System.out.println("SEXO: " + rs.getString("SEXO")); System.out.println("DATA DE NASCIMENTO: " + rs.getDate("DATA_NASCIMENTO")); System.out.println("TELEFONE: " + rs.getLong("TELEFONE")); System.out.println("========================================"); } rs.close(); st.close(); conn.commit(); conn.close(); }
  • 27. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 27 Exemplos – Bloco Transacional public static void blocoTransacional() { Connection conn = null; try { DriverManager.registerDriver(new com.mysql.jdbc.Driver()); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/dbexemplo", "root", "root"); conn.setAutoCommit(false); /* AQUI VEM O CÓDIGO EFETIVO */ conn.commit(); // realiza commit } catch (SQLException e) { System.out.println("Ocorreu uma exceção de SQL. Causa: " + e.getMessage()); if (conn != null) { // se a conexão estiver aberta try { conn.rollback(); // realiza rollback } catch (SQLException e1) { System.out.println("Exceção ao realizar rollback. Causa: " + e1.getMessage()); } } } finally { if (conn != null) { // se a conexão estiver aberta try { conn.close(); } catch (SQLException e) { System.out.println("Exceção ao fechar a conexão. Causa: " + e.getMessage()); } } } }
  • 28. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 28 Exemplos – Bloco Transacional public static void blocoTransacional() { Connection conn = null; try { DriverManager.registerDriver(new com.mysql.jdbc.Driver() ()); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/dbexemplo", "root", "root"); conn.setAutoCommit(false); /* AQUI VEM O CÓDIGO EFETIVO */ conn.commit(); // realiza commit } catch (SQLException e) { System.out.println("Ocorreu uma exceção de SQL. Causa: " + e.getMessage()); if (conn != null) { // se a conexão estiver aberta try { conn.rollback(); // realiza rollback } catch (SQLException e1) { System.out.println("Exceção ao realizar rollback. Causa: " + e1.getMessage()); } } } finally { if (conn != null) { // se a conexão estiver aberta try { conn.close(); } catch (SQLException e) { System.out.println("Exceção ao fechar a conexão. Causa: " + e.getMessage()); } } } } PreparedStatement ps = conn.prepareStatement( "insert into CONTATO values (?,?,?,?,?)"); ps.setLong(1, 12345678905L); ps.setString(2, "Clodovil"); ps.setString(3, "I"); ps.setDate(4, new java.sql.Date(500000000000L)); ps.setLong(5, 3132501111L); ps.executeUpdate(); ps.close();
  • 29. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 29 Importante n  Prefira a utilização de transações. q  Isto é, opte por conn.setAutoCommit(false)! n  Encerre tudo que tiver sido aberto. q  Invoque o método close() de conexões, instruções e conjunto de resultados n  Sempre faça o acesso a um banco de dados utilizando um tratamento de exceção adequado q  Isto é, fazer rollback em caso de erro, fechar sempre a conexão independente de sucesso ou falha na transação etc
  • 30. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 Desenvolvendo uma Aplicação Completa n  Com toda a teoria absorvida e entendida, vamos agora criar uma aplicação Java completa com acesso à uma base de dados n  Para isso, utilizaremos: q  Eclipse q  Oracle XE ou MySql q  Connector para Oracle ou MySql q  Biblioteca TerraUtil! n  Disponível em: www.ricardoterra.com.br/palestras n  A aplicação a ser desenvolvida será explicada nos próximo slides Java JDBC 30
  • 31. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 Desenvolvendo uma Aplicação Completa n  Inicialmente, o usuário poderá escolher dentre uma das opções abaixo. Cada opção será implementada em um método específico ========================! CADASTRO DE CONTATOS ! ========================! 1 – SALVAR! 2 – ATUALIZAR! 3 – EXCLUIR! 4 – PESQUISAR! 5 – LISTAR! 6 – ENCERRAR!  ! DIGITE A OPÇÃO DESEJADA: ! Java JDBC 31
  • 32. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 Desenvolvendo uma Aplicação Completa 1.  Salvar q  Pedirá ao usuário todas as informações do contato e gravará no SGBD q  Retornará ao menu de opções 2.  Atualizar q  Pedirá ao o usuário para digitar o cpf do contato n  Caso exista, pedirá todas as informações do contato novamente – com a exceção do cpf – e atualizará no SGBD. Caso não exista, isso deverá ser avisado ao usuário q  Retornará ao menu de opções 3.  Excluir q  Pedirá para o usuário digitar o número da matrícula n  Caso exista, excluir-se-á e avisará ao usuário que a exclusão foi efetuada com sucesso. Caso não exista, isto deverá ser avisado ao usuário q  Retornará ao menu de opções Java JDBC 32
  • 33. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 Desenvolvendo uma Aplicação Completa 4.  Pesquisar q  Pedirá para o usuário digitar o cpf do contato q  Caso exista, irá exibir as informações do contato. Caso não exista, isto deverá ser avisado ao usuário q  Retornará ao menu de opções 5.  Listar q  Se existir algum contato, exibirá as informações de todos. Caso não exista nenhum, isso deverá ser avisado ao usuário q  Retornará ao menu de opções 6.  Encerrar q  Deverá encerrar o aplicativo Java JDBC 33
  • 34. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010 Desenvolvendo uma Aplicação Completa n  Teremos uma classe do tipo Contato! n  Teremos uma classe de busca de conexão (DBLocator) n  Teremos um ContatoDAO! n  Teremos a classe Aplicacao! q  que fará toda a interação com o usuário através da biblioteca TerraUtil! Java JDBC 34
  • 35. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 35 Dúvidas? ???
  • 36. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 36 Obrigado! Ricardo Terra rterrabh [at] gmail.com Apresentação e projeto Java disponíveis em: www.ricardoterra.com.br/palestras
  • 37. Ricardo Terra (rterrabh [at] gmail.com) Maio, 2010Java JDBC 37 Referência Bibliográfica n  DEITEL, H. M; DEITEL, P. J. Java, como programar. 6 ed. São Paulo: Prentice-Hall, 2005. n  DAWES, Chip; THOMAS, Biju. OCA/OCP: Introduction to Oracle9i™ SQL. São Francisco: Sibex, 2002.