Sei sulla pagina 1di 85

Linguagem

deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

So Paulo, 2012

Universidade Paulista (UNIP)

Introduo a Java Database Conectivity


(JDBC)

Prof. MSc. Vladimir Camelo


Vladimir.professor@gmail.com

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Introduo a JDBC
Os programas Java comunicam-se com BD e manipulam seus dados
utilizando a API JDBC (Java DataBase Connection).
Um driver JDBC permite aos aplicativos Java conectar-se a um BD
em um SGDBMS particular e permite aos programadores manipular
esse banco de dados utilizando a API JDBC.
O JDBC quase sempre utilizado com um BD relacional, mas pode
ser utilizado com qualquer origem de dados baseada em tabela.

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Introduo a JDBC
Um Banco de dados uma coleo de dados inter-relacionados,
representando informaes sobre um domnio especfico.
Basicamente uma tabela composta de vrias linhas divididas
em colunas que so identificadas por campos, e cada linha
representa um registro do banco de dados.
Um Sistema de Gerenciamento de Bancos de Dados (SGDBMS
DataBase

Management

System)

fornece

mecanismos

para

armazenar, organizar, recuperar e modificar dados para muitos


usurios.

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Introduo a JDBC
Para manipular informaes em um SGDBMS utilizada uma
linguagem padro para BD conhecida como Structured Query
Language (SQL).
A SQL um padro internacional utilizada em BD relacionais para
realizar consultas, isto , solicitar informaes que satisfazem os
critrios dados, e manipular estes dados.
Alguns SGDBRMS populares so MS SQL Server, Oracle, Sybase,
IBM DB2, Informix, PostgreSQL e MySQL.

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Linguagem SQL
A origem de SQL e do modelo de BD relacional reporta ao Dr. E. F.
Codd, pesquisador da IBM, primeiro a publicar um artigo sobre a
idia de banco de dados relacional em Junho de 1970.
A linguagem SQL for originalmente desenvolvida na IBM em um
projeto de SGBDR, como uma linguagem de consulta a BD
denominada SEQUEL, sigla para Structured English Query Language
(Linguagem de Consulta Estruturada em Ingls).
A linguagem SEQUEL2 foi descrita na edio de Novembro de 1976
do IBM Journal of R&D.

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Linguagem SQL
O nome foi posteriormente mudado para SQL (Structured Query
Language Linguagem de Consulta Estruturada), por razes legais.
No final da dcada de 70, duas outras companhias iniciaram
desenvolvimento de produtos similares (Oracle e Ingres).
A IBM tambm implementou SQL em seus sistemas de BD DB2 e
SQL/DS.
Entre os anos 80 e 90, os produtos com SQL se multiplicaram e hoje
SQL largamente implementada e aceita como o padro de fato da
indstria para linguagem de acesso a BD, desde sistemas desktop a
mainframes
01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Linguagem SQL
Em 1986 o American National Standard Institute ( ANSI ) , publicou
um padro SQL.
A ltima especificao publica pelo ANSI foi em 1992. Hoje a
linguagem SQL conhecida como SQL ANSI-92.
Apartir de ento a SQL estabeleceu-se como linguagem padro de
Banco de Dados Relacional.

01/08/12

vladimir.professor@gmail.com

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Banco de dados relacional


Um BD relacional uma representao lgica de dados que permite o
acesso aos dados sem considerar sua estrutura fsica.
Em um BD so armazenados as tabelas com as informaes.
As tabelas so compostas de linhas (registros) e as linhas so
compostas de colunas (campos) nas quais os valores so
armazenados.

01/08/12

vladimir.professor@gmail.com

10

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Banco de dados relacional

01/08/12

vladimir.professor@gmail.com

11

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Diagrama Entidade Relacionamento


ER

(entity

relationship),

tambm

conhecido

como

Entidade-

Relacionamento. Esse diagrama mostra as tabelas no BD e os


relacionamentos entre elas.
O primeiro compartimento em cada caixa contm o nome da tabela.
Os nomes em itlico so chaves primrias.
Uma chave primria da tabela identifica unicamente cada linha na
tabela e deve ser nico na tabela. Isso conhecido como Regra de
Integridade de Entidade.

01/08/12

vladimir.professor@gmail.com

12

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Diagrama Entidade Relacionamento

01/08/12

vladimir.professor@gmail.com

13

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Diagrama Entidade Relacionamento


As linhas que conectam as tabelas no diagrama representam os
relacionamentos entre as tabelas.
A linha entre as tabelas Editores e Titulos, na extremidade Editores,
h um 1 e, na extremidade Titulos, h um smbolo de infinito ( ),
indicando m relacionamento de um para muitos em que cada editor
na tabela Editores pode ter um nmero arbitrrio de livros na tabela
Titulos.
A linha de relacionamento vincula a coluna chave primria na tabela
Editores com a coluna chave estrangeira na tabela Titulos. O mesmo
ocorre nos demais relacionamentos.

01/08/12

vladimir.professor@gmail.com

14

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Componentes da linguagem SQL e operadores


Linguagem de definio de dados (Data Definition Language - DDL)
Inclui a sintaxe mais utilizada para definir, alterar e eliminar as
tabelas do banco de dados.
Criao dos esquemas (estrutura das tabelas, definio de
vises...), excluso, criao de ndices, modificao nos
esquemas...
Lista das principais Sentenas:
CREATE (criar);
ALTER (alterar); e
DROP (apagar).
01/08/12

vladimir.professor@gmail.com

15

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Componentes da linguagem SQL e operadores


Linguagem de consulta de dados (Data Query Language - DQL)

Contm os componentes da linguagem e conceitos para a


consulta e recuperao da informao armazenados em tabelas.
Sentena:
SELECT (listar linhas)

01/08/12

vladimir.professor@gmail.com

16

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Componentes da linguagem SQL e operadores


Linguagem de Manuteno de dados (Data Manipulation Language DML)

Contm os componentes da linguagem e conceitos para a


manipulao da informao armazenados em tabelas.
Insero, excluso e alterao;
Incorporao em linguagens imperativas (ex.: pascal, ...)
Lista das principais Sentenas:
INSERT (inserir dados),
DELETE (apagar dados); e
UPDATE (atualizar dados).
01/08/12

vladimir.professor@gmail.com

17

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Componentes da linguagem SQL e operadores


Operadores
Operadores lgicos: AND, OR
Operadores de negao:NOT
Operadores aritmticos: *, /, -, +
Operadores de comparao:
= (igualdade),
!= (diferena),
<,>
=<
>=
titles must be in boldface, 12pt, flush left.
01/08/12

vladimir.professor@gmail.com

18

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Linguagem SQL

01/08/12

vladimir.professor@gmail.com

19

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados
So Paulo, 2012

Universidade Paulista (UNIP)

Java com acesso a banco de dados MySql

Prof. MSc. Vladimir Camelo


Vladimir.professor@gmail.com

01/08/12

vladimir.professor@gmail.com

20

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Introduo
Para acessar o banco de dados MySql, selecione o aplicativo MySql
Administrator. Informe Server Host (Nome do servidor onde o banco
de dados est instalado), porta de acesso ao banco de dados,
username (nome de usurio) e password (senha).

01/08/12

vladimir.professor@gmail.com

21

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Introduo
Informaes iniciais sobre o MySql.

01/08/12

vladimir.professor@gmail.com

22

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Utilizao do MySQL
Para criar uma tabela no MySql acesse no menu de gerenciamento o
item catalogs.
Ao selecionar catologs ser apresentada uma lista com as tabelas
existentes no banco de dados.
Na parte inferior da tela escolha o item create table, como mostra a
imagem a seguir.

01/08/12

vladimir.professor@gmail.com

23

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Criando um banco de dados

Aula_Teste

01/08/12

vladimir.professor@gmail.com

24

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Criando um banco de dados

01/08/12

vladimir.professor@gmail.com

25

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Criando uma tabela

01/08/12

vladimir.professor@gmail.com

26

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Criando uma tabela

01/08/12

vladimir.professor@gmail.com

27

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Criando uma tabela

01/08/12

vladimir.professor@gmail.com

28

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Criando uma tabela

01/08/12

vladimir.professor@gmail.com

29

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Para criar comandos SQL pode ser utilizado o MySql Command
Line Client disponvel no menu Tools do MySql Administrator.
O primeiro passo selecionar a base de dados a ser utilizada
colocando o comando use nome_bd_utilizado.

01/08/12

vladimir.professor@gmail.com

30

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Para inserir dados na base de dados utilize o comando INSERT do
SQL padro. Vamos utilizar o seguinte comando.
Insert into cliente (nome, endereco, rg) values (vladimir, av.
teste,11.111.111-1)

01/08/12

vladimir.professor@gmail.com

31

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Para visualizar os dados inseridos utilize o comando SELECT do
SQL padro. Vamos utilizar o seguinte comando.
Select * from cliente

01/08/12

vladimir.professor@gmail.com

32

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Para alterar os dados inseridos utilize o comando UPDATE do SQL
padro. Vamos utilizar o seguinte comando.
Update cliente set nome = vladimir camelo where idCliente = 1

01/08/12

vladimir.professor@gmail.com

33

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Para visualizar os dados alterados insira novamente o comando
SELECT utilizado anteriormente.
Perceba que o nome do cliente foi alterado.

01/08/12

vladimir.professor@gmail.com

34

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


possvel observar que no foi informado o idCliente durante a
insero dos dados do cliente.
Isto por que durante a criao dos campos na tabela cliente, o
idCliente foi criado como a propriedade auto increment.
Desta forma no preciso inserir o cdigo do cliente, sendo
responsabilidade do banco de dados a insero do cdigo sempre
incrementando mais um ao ltimo cdigo.

01/08/12

vladimir.professor@gmail.com

35

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Vamos excluir um dos dados armazenados utilizando o comando
SQL padro DELETE.
Ser excludo o cliente com o cdigo 3.

01/08/12

vladimir.professor@gmail.com

36

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Perceba que o cliente de cdigo 3 foi excludo da tabela cliente.

01/08/12

vladimir.professor@gmail.com

37

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL padro


Perceba que para alterar e excluir um usurio da tabela preciso
informar o idCliente deste cliente caso contrrio todos os dados
armazenados sero alterados ou excludos.

01/08/12

vladimir.professor@gmail.com

38

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL utilizando Query Browser

01/08/12

vladimir.professor@gmail.com

39

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Comandos SQL utilizando Query Browser


A nica diferena entre o MySql Command Line Client e o Query
Browser que este ltimo apresenta uma interface grfica amigvel
ao usurio.

01/08/12

vladimir.professor@gmail.com

40

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Exerccio
Crie um banco de dados para paciente.
Insira dados nesta tabela. (Utilize o comando insert)
Selecione estes dados e apresente utilizando o MySql Commando
Line Client e tambm o Query Browser. (utilize o comando select)
Exclua um dos pacientes inseridos. (utilize o comando delete)
Altere os dados de algum paciente. (utilize o comando update)

01/08/12

vladimir.professor@gmail.com

41

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

Para acessar os dados armazenados em uma banco de dados


MySql devem ser realizados os seguintes passos:
1.

Baixe o arquivo mysql-connector-java-5.0.8.tar.gz.

2.

Descompacte o arquivo e coloque o arquivo mysql-connectorjava-5.0.8-bin.jar no diretrio C:\Arquivos de


programas\Java\jdk1.5.0_14\jre\lib\ext e renomeie para
mysql.jar.

3.

Crie no CLASSPATH um alias para esse arquivo como mostra


o exemplo a seguir.

01/08/12

vladimir.professor@gmail.com

42

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

43

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

44

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

45

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados
So Paulo, 2012

Universidade Paulista (UNIP)

Exemplo de aplicaes com


acesso a banco de dados

Prof. MSc. Vladimir Camelo


Vladimir.professor@gmail.com

4
01/08/12

vladimir.professor@gmail.com

46

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

47

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

48

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

49

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

50

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


import javax.swing.*;
import javax.swing.border.EtchedBorder;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import br.com.uniban.conexao.ConexaoBD;
public class FrameJCombo extends JFrame implements ItemListener,
WindowListener {
private Connection con = null;
private Statement st = null;
private int inicio = 0;
ConexaoBD conexao = new ConexaoBD();
JPanel painel = new JPanel();
JLabel lblEstado = new JLabel("Estado:");
JComboBox combobox = new JComboBox();
01/08/12

vladimir.professor@gmail.com

51

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


public FrameJCombo() {
super ("JComboBox e Banco de dados");
con = conexao.Conectar();
Container formulario = getContentPane();
FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
formulario.setLayout(layout);
addWindowListener(this);
painel.setSize(210, 42);
painel.setBorder(new EtchedBorder());
painel.setBackground(new Color(219, 219, 219));
lblEstado.setFont(new Font("Arial", 2, 16));
painel.add(lblEstado);
combobox.addItemListener(this);
combobox.setBackground(new Color(239, 247, 255));
painel.add(combobox);
01/08/12

vladimir.professor@gmail.com

52

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


try {
this.st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM estado ORDER BY uf");
combobox.addItem("");
while(rs.next()){
combobox.addItem(rs.getString("uf"));
}
combobox.setSelectedItem(0);
combobox.setSelectedIndex(0);
} catch(SQLException ex) {
JOptionPane.showMessageDialog(null, "Problema na conexo");
}
formulario.add(painel);
setSize(150, 80);
show();
}

01/08/12

vladimir.professor@gmail.com

53

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


public void itemStateChanged(ItemEvent e) {
if (inicio == 1){
if(e.getStateChange() == ItemEvent.SELECTED){
JOptionPane.showMessageDialog (null,combobox.getSelectedItem());

}
}else {
inicio = 1;
}}
public void windowActivated(WindowEvent arg0) { }
public void windowClosed(WindowEvent e) { }
public void windowClosing(WindowEvent arg0) { System.exit(0); }
public void windowDeactivated(WindowEvent arg0) { }
public void windowDeiconified(WindowEvent arg0) { }
public void windowIconified(WindowEvent arg0) { }
public void windowOpened(WindowEvent arg0) { }
public static void main(String[] args) {
new FrameJCombo();
}}
01/08/12

vladimir.professor@gmail.com

54

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


package br.com.uniban.conexao;
import java.sql.*;
public class ConexaoBD {
private String url = null, login = null, senha = null;
private Connection con = null;
public Connection Conectar() {
try
{
Class.forName("com.mysql.jdbc.Driver");
this.url = "jdbc:mysql://localhost:3306/aula_teste";
this.login = "root";
this.senha = "498386";
this.con = DriverManager.getConnection(url,login,senha);
} catch(ClassNotFoundException ex){
System.out.println("Driver JDBC no encontrado!");
} catch(SQLException ex){
System.out.println("Problemas na conexao com a fonte de dados");
}
return this.con;
}
}
01/08/12

vladimir.professor@gmail.com

55

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

56

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


import java.awt.event.*;
import br.com.uniban.conexao.ConexaoBD;
import javax.swing.*;
import java.util.*;
import java.sql.*;
public class Tabela extends JFrame implements WindowListener{
private Connection con = null;
private Statement st = null;
ConexaoBD conexao = new ConexaoBD();
private Vector linas = new Vector();
private Vector colunaslinas= new Vector();
private JTable tabela;

01/08/12

vladimir.professor@gmail.com

57

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


public Tabela() {
try {
con = conexao.Conectar();
this.st = con.createStatement();
ResultSet rs = st.executeQuery ("SELECT * FROM cliente");
rs.next();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i=1; i <= rsmd.getColumnCount();++i){
colunaslinas.addElement(rsmd.getColumnName(i));
}
do{
linas.addElement(proximalin(rs,rsmd));
}while (rs.next());
rs.close();
con.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog (null, "Problemas na conexao do BD","ERRO", 0);
}
01/08/12

vladimir.professor@gmail.com

58

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


tabela = new JTable(linas,colunaslinas);
JScrollPane scroller = new JScrollPane (tabela);
getContentPane().add(scroller);
addWindowListener(this);
setLocationRelativeTo(null);
setSize (380,170);
show();
}

01/08/12

vladimir.professor@gmail.com

59

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


private Vector proximalin (ResultSet rs, ResultSetMetaData rsmd){
Vector linhaAtual = new Vector();
try {
for (int i=1; i <= rsmd.getColumnCount();++i){
switch (rsmd.getColumnType(i)) {
case 4: linhaAtual.addElement(rs.getInt(i));
break;
case 12: linhaAtual.addElement(rs.getString(i));
break;
}
}
} catch (SQLException e) { }
return linhaAtual;
}

01/08/12

vladimir.professor@gmail.com

60

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java


public void windowActivated(WindowEvent arg0) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent arg0) { System.exit(0); }
public void windowDeactivated(WindowEvent arg0) {}
public void windowDeiconified(WindowEvent arg0) {}
public void windowIconified(WindowEvent arg0) {}
public void windowOpened(WindowEvent arg0) {}
public static void main(String[] args) {
new Tabela();
}
}

01/08/12

vladimir.professor@gmail.com

61

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Acessando os dados com aplicao em Java

01/08/12

vladimir.professor@gmail.com

62

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados
So Paulo, 2012

Universidade Paulista (UNIP)

Interfaces do Pacote java.sql para


acesso ao banco de dados

Prof. MSc. Vladimir Camelo


Vladimir.professor@gmail.com

01/08/12

vladimir.professor@gmail.com

63

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Pacote java.sql
Fornece a API para acesso e processamento de dados;
Principais classes e interfaces so:
DriverManager: responsvel por criar uma conexo com o BD;
Connection: classe responsvel por manter uma conexo aberta
com o BD;
Statement: gerencia e executa instrues SQL;
PreparedStatement: gerencia e executa instrues SQL,
permitindo tambm a passagem de parmetros em uma
instruo;
ResultSet: responsvel por receber os dados obtidos em uma
pesquisa ao banco.
01/08/12

vladimir.professor@gmail.com

64

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Conexo com o banco de dados


Para abrir uma conexo com um banco de dados preciso realizar
duas tarefas distintas:
verificar a existncia do driver de conexo e solicitar a abertura da
conexo.
A verificao da existncia do driver pode ser feita utilizando-se a
seguinte instruo:
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException e) {
}

01/08/12

vladimir.professor@gmail.com

65

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Connection
representa a conexo com o banco de dados;
proporcionar informaes sobre as tabelas do BD por meio de
transaes;
Os mtodos desta interface freqentemente utilizados so:
commit(): executa todas as alteraes feitas com o banco de
dados pela atual transao.
rollback(): desfaz qualquer alterao feita com o banco de dados
pela atual transao.
close(): libera o recurso que estava sendo utilizado pelo objeto.

01/08/12

vladimir.professor@gmail.com

66

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Conexo com o banco de dados


A String "com.mysql.jdbc.Driver" representa o nome de classe do
driver MySQL JDBC a ser utilizada.
Para carreg-la, basta invocar o mtodo esttico forName() da
classe java.lang.Class.
A prxima tarefa solicitar a abertura da conexo utilizando a classe
java.sql.DriverManager e da interface java.sql.Connection.
A DriverManager representa o servio bsico de gerenciamento de
um conjunto de drivers JDBC.
Ela contm um mtodo esttico, chamado getConnection(),
responsvel por estabelecer uma conexo com um banco de dados.

01/08/12

vladimir.professor@gmail.com

67

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Conexo com o banco de dados


Try {
class.forName (com.mysql.jdbc.Driver);
Connection con;
String url = "jdbc:mysql://localhost:porta/banco";
String login = "usuario" ;
String senha = "senha";
con = DriverManager.getConnection(url,usurio,senha);

}
catch (SQLException sqle) {
}
01/08/12

vladimir.professor@gmail.com

68

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Conexo com o banco de dados


Depois de ser utilizada, a conexo deve ser finalizada.
Para terminar uma conexo representada por uma instncia de
classe Connection, basta invocar seu mtodo close().

try {
con.close();
}
catch (SQLException sqle) {
}

01/08/12

vladimir.professor@gmail.com

69

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Atualizar ou visualizar informaes no banco de dados


Para enviar uma instruo SQL ao banco de dados (BD), a
aplicao Java precisa criar uma instncia da interface Statement.
A funo desta interface enviar instrues SQL ao banco e captar
o retorno produzido.
Para instanciar a interface Statement, preciso ter uma conexo
aberta com o BD.
Uma instncia da interface Connection criada utilizando-se o
mtodo esttico getConnection() da classe DriverManager

01/08/12

vladimir.professor@gmail.com

70

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Atualizar ou visualizar informaes no banco de dados


Uma instncia da interface Statement criada utilizando-se o
mtodo esttico createStatement() da interface Connection.
Toda instncia da interface Statement vinculada, no momento de
sua criao, a uma conexo ativa e, portanto, as instrues SQL a
serem enviadas por ela j tm um BD especfico como destino.

01/08/12

vladimir.professor@gmail.com

71

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Atualizar ou visualizar informaes no banco de dados


Para executar uma instruo SQL no banco de dados deve ser
utilizado os mtodos:
executeQuery: para executar somente a instruo SELECT.
executeUpdate: para executar as instrues DELETE, INSERT e
UPDATE.

01/08/12

vladimir.professor@gmail.com

72

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Atualizar ou visualizar informaes no banco de dados


A interface ResultSet representa uma estrutura de dados
bidimensional (matriz) resultante de uma consulta a um banco.
Uma instncia dessa interface mantm um cursor apontando para
uma linha dessa estrutura de dados, que inicialmente est
posicionada antes do primeiro registro.
O mtodo next() move o cursor para a prxima linha retornando um
valor booleano (false) quando invocado e j se encontra na ltima
linha.
Em conjunto com o lao while possibilita a varredura dos dados
contidos nessa estrutura. O mtodo get<tipo>(<campo>) permite
recuperar o valor do campo para o registro atual.
01/08/12

vladimir.professor@gmail.com

73

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Atualizar ou visualizar informaes no banco de dados


while(rs.next())
System.out.println(rs.getString(nome));
Na primeira verso da JDBC no havia suporte iterao inversa
para uma instncia da interface ResultSet.
Para criar um conjunto de resultados rolvel (navegar para frente e
para trs), os dados tinham que ser transferidos para outra estrutura
de dados.
A JDBC2 inclui suporte aos resultados rolveis em um conjunto de
resultados e at saltos para quaisquer posies do conjunto.

01/08/12

vladimir.professor@gmail.com

74

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

PreparedStatement
A API JDBC fornece uma maneira de executar comandos SQL
parametrizados.
A Interface PreparedStatement, subclasse de Statement.
Vantagens de PreparedStatement
cdigo mais legvel;
melhor performance pois os comandos so pr-compilados e
otimizados;
ganhos de segurana minimizando ataques de injeo de SQL.
Com PreparedStatement, a string contendo o comando SQL deve
ser fornecida no momento da criao do comando e no no
momento de execuo do comando.
01/08/12

vladimir.professor@gmail.com

75

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

PreparedStatement
A interface PreparedStatement possui todos os recursos da interface
Statement;
acrescentando a utilizao de parmetros em uma instruo SQL;
mtodos da interface PreparedStatement so:
executeQuery(): consolida a instruo SQL informada;
setDate(): mtodo utilizado para atribuir um valor do tipo Data;
setInt(): utilizado para atribuir valores do tipo inteiro;
setString(): mtodo utilizado para atribuir valores do tipo Alfa
Numricos.

01/08/12

vladimir.professor@gmail.com

76

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

PreparedStatement
Os parmetros de um PreparedStatement so indicados por sinais
de interrogaco dentro da string que contm o comando SQL.
A interface PreparedStatement fornece uma srie de mtodos do
tipo setInt, setDate, etc. que permitem passar os valores dos
parmetros antes da execuco
Os parmetros so identificados pela sua posio dentro da string
SQL, iniciando por 1
Devido s vantagens de se ter o cdigo mais simples e seguro, a
maioria dos desenvolvedores prefere usar PreparedStatement,
mesmo para comandos SQL que sero executados uma nica vez e
onde portanto no haveria ganho de performance.

01/08/12

vladimir.professor@gmail.com

77

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

PreparedStatement

Connection con = null;


PreparedStatement st = con.prepareStatement(
"Select * FROM pessoa where nome = ?");
st.setString(1, Vladimir Camelo");
resultado = st.executeQuery( );

01/08/12

vladimir.professor@gmail.com

78

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Classe DatabaseMetaData
A classe DatabaseMetaData recuperada por meio do objeto
Connection e possibilita recuperar metadados sobre:
BD em uso,
objetos do banco de dados,
informaes sobre o Driver JDBC,
privilgios de acesso,
etc.
Existem mais de 150 mtodos disponveis para esta classe.

01/08/12

vladimir.professor@gmail.com

79

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Classe DatabaseMetaData
importjava.sql.*;

publicclassExemplo1{
publicstaticvoidmain(String[]args)throwsSQLException{
class.forName(com.mysql.jdbc.Driver);

Connectionconn=DriverManager.getConnection(
"jdbc:mysql:\\localhost:3306\aula_teste",root",123456");
DatabaseMetaDatadbmd=conn.getMetaData();

System.out.println(
"VersaodoDriverJDBC="+dbmd.getDriverVersion());
System.out.println(
"VersaodoBD="+dbmd.getDatabaseProductVersion());
System.out.println(
"SuportaSelectforUpdate?="+dbmd.supportsSelectForUpdate());

System.out.println(
"SuportaTransacoes?="+dbmd.supportsTransactions());

ResultSetr2=dbmd.getSchemas();
while(r2.next()){
System.out.println("SCHEMADOBD="+r2.getString(1));
} } }
01/08/12

vladimir.professor@gmail.com

80

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Classe ResultSetMetaData
A classe ResultSetMetaDado possibilita recuperar mais informaes
sobre os metadados do BD.
Por meio de uma instncia de um objeto dessa classe possvel
recuperar dinamicamente a quantidade de colunas de uma tabela.
possvel recuperar tambm o nome de colunas, seu tipo, tamanho,
entre outras informaes.
No exemplo a seguir a classe ResultSetMetaData utilizada para
descobrir dinamicamente o total de colunas de uma tabela, o nome
de suas colunas e o tipo das mesmas.

01/08/12

vladimir.professor@gmail.com

81

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Classe ResultSetMetaData

...
Statementstmt=conn.createStatement();
ResultSetrset=stmt.executeQuery("SELECT*fromEMP");

ResultSetMetaDatarsmd=rset.getMetaData();

intnumColumns=rsmd.getColumnCount();
System.out.println("TotaldeColunas="+numColumns);

//looppararecuperarosmetadadosdecadacoluna
for(inti=0;i<numColumns;i++){
System.out.print(
"NomedaColuna="+rsmd.getColumnName(i+1));
System.out.print(
"Tipo="+rsmd.getColumnType(i+1));
System.out.print(
"NomedoTipo="+rsmd.getColumnTypeName(i+1));
System.out.print(
"Tamanho="+rsmd.getColumnDisplaySize(i+1));
System.out.println(
"CasasDecimais="+rsmd.getScale(i+1));
}
01/08/12

vladimir.professor@gmail.com

82

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Classe ParameterMetaData
Por meio da classe ParameterMetaData possvel recuperar
metadados sobre os "parmetros" de clusulas SQL que so usadas
com a classe PreparedStatement.
Assim possvel descobrir dinamicamente a quantidade de
parmetros utilizados e suas caractersticas.

01/08/12

vladimir.professor@gmail.com

83

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

Classe ParameterMetaData
PreparedStatementpstmt=conn.prepareStatement(
"SELECT*FROMEMPWHEREEMPNO=?ANDDEPTNO=?");
ParameterMetaDatapmd=pstmt.getParameterMetaData();

//recuperaototaldeparametros
inttotalParam=pmd.getParameterCount();

//recuperainformacoessobrecadaparametro
for(inti=0;i<totalParam;i++){
inttipoParam=pmd.getParameterType(i+1);
StringnomeTipoParam=pmd.getParameterTypeName(i+1);
}

01/08/12

vladimir.professor@gmail.com

84

Linguagem
deem
Programao
Objetos (LPOO)
Interface
grfica
Java e acessoOrientada
a Banco deadados

So Paulo, 2012

Universidade Paulista (UNIP)

Introduo a Java Database Conectivity


(JDBC)

Prof. MSc. Vladimir Camelo


Vladimir.professor@gmail.com

01/08/12

vladimir.professor@gmail.com

85

Potrebbero piacerti anche