You are on page 1of 16

post favorito comentrios

Conhece a assinatura MVP?


Anuncie | Loja | Publique | Assine |
Fale conosco
DevMedia
27.731 pessoas curtiram DevMedia.
Plug-in social do Facebook
Curtir Curtir
Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
1 de 16 08/08/2014 12:11

Gostei (4) (1)

Introduo
A API JDBC disponibiliza diversos servios para manipulao de Banco de Dados, como por
exemplo, mtodos que gerenciam a conexo com o banco ou objetos que trabalham com
resultados obtidos.

A responsabilidade principal da interface Statement executar sentenas SQL no banco de
dados. O caso mais comum a execuo de SQL de consulta (a sentena SELECT), que vai
gerar um conjunto de dados na resposta, o ResultSet:

...
Connection con = DriverManager.getConnection(...);
Statement stm = con.createStatement();

Servios
Inclua um comentrio
Adicionar aos Favoritos
Marcar como lido/assistido
Incluir anotao pessoal
+Java

0 1 Curtir Curtir 20
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
2 de 16 08/08/2014 12:11
...

O ResultSet, objeto responsvel por manipular os dados obtidos da execuo de uma query,
o foco deste tutorial, que mostrar o comportamento interessante deste objeto: o
Scrollable ResultSet.
Navegabilidade refere-se capacidade de navegar para frente e para trs nas
linhas contidas em um ResultSet.
Posicionamento a capacidade de mover o cursor corrente para uma outra posio
dentro do ResultSet.
Manipulao a capacidade de alterar os valores contidos em um ResultSet.

Este tipo de ResultSet tem a capacidade de Navegabilidade e de Posicionamento, para isso,
ele utiliza trs chamadas diferentes para objetos Statement:

connection.createStatement(int resultSetType, int resultsetConcurrency);

CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
3 de 16 08/08/2014 12:11
resultSetConcurrency);

connection.prepareCall(String sql, int resultSetType, int
resultSetConcurrency);

O parmetro resultSetType define se o ResultSet ir ser navegvel e posicionado ou no:
ResultSet.TYPE_FORWARD_ONLY: com este parmetro o ResultSet no poder
ser navegvel, ou seja, poderemos somente avanar no objeto ResultSet para poder buscar
valores.
ResultSet.TYPE_SCROLL_INSENSITIVE: com este parmetro o ResultSet
poder ser navegvel em qualquer direo, para frente e para trs, e ser insensvel a
mudanas feitas por outras transaes ou por outros Statements da mesma transao.
ResultSet.TYPE_SCROLL_SENSITIVE: com este parmetro o ResultSet poder
ser navegvel para qualquer direo, e ser sensvel a mudanas feitas por outras
transaes ou por outros Statements da mesma transao.
Para prover a navegabilidade e o posicionamento, a classe ResultSet possui vrios
mtodos.Ex:
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
4 de 16 08/08/2014 12:11
caso no exista linhas, retorna false.
boolean last(): posiciona o cursor na ltima linha do ResultSet e retorna true, caso
no exista linhas, retorna false.
boolean previous(): posiciona o cursor para a linha anterior a posio corrente,
retorna true caso a linha seja vlida e false caso contrrio.
Aplicando o que foi passado possvel criar uma aplicao que simula um DBNavigator do
Delphi. Ou seja, possvel criar uma aplicao para navegar nos registro que foram
consultados em uma tabela do banco de dados:
1. criar um JFrameForm
2. criar a conexo, utilizando uma ponte JDBC/ODBC, por exemplo, no mtodo
construtor
3. executar um dos trs tipos de comandos Statment citados anteriromente. Ex:
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

1. inserir os componentes grficos, um Jlabel e um JTextField para cada campo da
tabela, retornado na consulta do comando SQL.
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
5 de 16 08/08/2014 12:11
3. Inserir as aes dos eventos destes botes.

Exemplo:
Criar uma aplicao para navegar no resultado da consulta de todos os campos da
tabela TbAgenda, composta dos seguintes campos:
o Numero: tipo texto;
o Nome: tipo Texto;

Supondo que o banco e a conexo ODBC, BDAgenda, j foram criadas: (Em caso de
dvida quanto estas operaes, veja os tutorias publicados anteriormente):

1 - Criar uma classe Java Gui Forms: clique no menu File New File.
Na janela que se abre selecione Java Gui Forms JFrameForm Next, insira o nome da
classe, DBNavigator, no campo Class Name. Clique em Finish.

CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
6 de 16 08/08/2014 12:11
registros.
- insira tambm quatro JButton (Primeiro, Prximo, Anterior, Ultimo) para permitir a
navegao.
- insira mais dois botes: um JToggleButton, Carregar Dados e um JButton, Sair:



Obs2: Para implementar as aes dos botes preciso importar os pacotes necessrios
para realizar as devidas operaes SQL e utilizar os componentes de exibio dos
resultados. Antes do comando de criao da Classe:

public class DBNavigator{
Insira os comandos de import:
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
7 de 16 08/08/2014 12:11
import javax.swing.*;

Obs1: O Resultado da consulta Sql ser guardado dentro de um ResultSet que por sua vez
ser compartilhado por todos os botes. Ento este resultado deve ser guardado dentro de
uma varivel global, fora dos mtodos. Localize o mtodo construtor da classe:

public DBNavigator(){
...

Antes deste comando insira a declarao da varivel do tipo ResultSet. Ex:
ResultSet RS;

O cdigo completo dever ficar parecido com:

CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
8 de 16 08/08/2014 12:11


3 - Criar a ao do boto Carregar Dados: clique com o boto direito do mouse sobre o
boto Carregar Dados Events actionPerformed. Insira os cdigos abaixo:
try{ //tratamento de erros
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver
//conecta no BD
Connection con=DriverManager.getConnection("jdbc:odbc: BDAgenda
","","");
Statement stmt =
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
RS= stmt.executeQuery("Select * from TbAgenda");
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
9 de 16 08/08/2014 12:11
JOptionPane.showMessageDialog(this,"Erro Cmdo SQL " +
e.getMessage());
} catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(this,"Driver no encontrado");
}

4 - Criar a ao do boto Primeiro. Clique com o boto direito do mouse sobre o boto
Primeiro Events actionPerformed. Insira os cdigos abaixo:
try{
RS.first();
jTextField1.setText(RS.getString("Numero"));
jTextField2.setText(RS.getString("Nome"));
} catch(SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,"Primeiro");
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
10 de 16 08/08/2014 12:11

5 - Criar a ao do boto Prximo:
try{
RS.next();
jTextField1.setText(RS.getString("Numero"));
jTextField2.setText(RS.getString("Nome"));
} catch(SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,"No Existem mais Registros");
}

6 - Criar a ao do boto Anterior:
try{
RS.previous();
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
11 de 16 08/08/2014 12:11
jTextField2.setText(RS.getString("Nome"));
} catch(SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,"No Existem mais Registros");
}

7 - Criar a ao do boto Ultimo:
try{
RS.last();
jTextField1.setText(RS.getString("Numero"));
jTextField2.setText(RS.getString("Nome"));
} catch(SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,"Ultimo");
}
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
12 de 16 08/08/2014 12:11
O que voc achou deste post? Gostei (4) (1)

8 - Criar a ao do boto Sair:
System.exit(0);

9 - Compile: F9

10 - Execute: Shift+F6
Jos Valney Melo Barbalho
Jos Valney Melo Barbalho (jvmb@ibest.com.br), MBA em GSI.
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
13 de 16 08/08/2014 12:11
Revista
Revista Java Magazine 130
Artigo
Utilizando o Redis com colees Java
Artigo
JasperReport com iReport para relatrios em Java
Artigo
Conhea o Bootsface: Bootstrap para Java Server Face
Artigo
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
14 de 16 08/08/2014 12:11
Artigo
Entendendo o Encapsulamento em Java
Artigo
Hibernate SaaS: Suas aplicaes como servio
Artigo
Spring Security: Integrando Spring com Java EE
Artigo
Spring Framework: Novidades da nova verso
Aplicativo com fontes
Cdigo fonte da Moderao - Curso de Introduo ao JSP com HTML 5: Intranet Escolar
Listar mais contedo
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
15 de 16 08/08/2014 12:11
CONTEDO

REVISTAS

CURSOS

POCKET VIDEOS DEVWARE

FRUM MVP LOGIN


Criando uma aplicao para navegar nos registros de uma tabela http://www.devmedia.com.br/criando-uma-aplicacao-para-navegar-nos-registros-de-uma-tabela/6156
16 de 16 08/08/2014 12:11