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