Navegar pelos registros de uma tabela usando JButton's

10 respostas
L

:lol: Olá, galera!

:stuck_out_tongue: Sou iniciante em java e estou criando minha primeira aplicação com acesso a Banco de Dados utilizando o NetBeans com Firebird2 (jaybird 2.1)…
Eu gostaria de saber como criar um esquema de navegação pelos registros de uma tabela… Com as quatro funções (primeiro &lt&lt, anterior &lt, próximo &gt, último &gt&gt).
:?: Quais métodos eu usaria?
:?: O que eu precisaria para clicar no botão e ele executar uma dessas funções?

:!: Quem puder me ajudar, por favor, ficarei muito grato!

Valeu!!!

10 Respostas

P

Rapaz,

Primeiro você tem que conectar-se ao BD e fazer um SELECT para trazer os registros da tabela. Para isso, você pode usar JDBC. Este tutorial do GUJ vai te ajudar:

http://www.guj.com.br/java.tutorial.artigo.7.1.guj

Depois as ações dos botões, fica a cargo da navegação no ResultSet do JDBC que você vai ver no artigo.

Boa sorte!

sds

M

Lindoélio,

A forma mais simples é utilizando um objeto "[b]ResultSet [/b]". é muito semelhante ao DataTable do .net,  você tem o método next().

Abraço.

F

Olá pessoal, tudo bem. Estou precisando de uma ajuda aqui. Eu tenho um método actionPerformed e o botão que ao ser clicado, move o cursor do banco para o próximo registro.
O probema começa aqui: quando eu clico nele ele move o cursor para o primeiro registro quando os campos do formulários estão vazios. Até aí está certo. Mas quando eu clico
novamente nele, ele não move o cursor para o próximo registro quando deveria. Espero ter sido claro e conto com o auxílio de vocês para me ajudarem a corrigir o meu equívoco. Muito obrigado desde já. Segue abaixo o meu método:

private class BtnProxActionListener implements ActionListener {
    	        	  public void actionPerformed(ActionEvent e) {
    	        		  String url = "jdbc:mysql://127.0.0.1/javabd2";
       				      String usuario = "root";
       				      String senha = null;
       				      var = 0;
       	
                                               try{
                                       	 Connection conx = DriverManager.getConnection(url, usuario, senha);
                                         stt = conx.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                 ResultSet.CONCUR_UPDATABLE);
                                         ResultSet nx = stt.executeQuery("SELECT * FROM cliente"); 
                                         
                                 while (nx.next()){
            
                                    txtNmCl.setText(nx.getString("cl_nome"));
                        			txtRgCl.setText(nx.getString("cl_rg"));
                        			txtCpfCl.setText(nx.getString("cl_cpf"));
                        			txtTelCl.setText(nx.getString("cl_tel"));
                        			txtEndCl.setText(nx.getString("cl_end"));
                        			
                                 }
                                   
                        			 JOptionPane.showMessageDialog(null, "deu certo"); 
                        			 
                                     
                                     }catch(SQLException e1){
                                    	 JOptionPane.showMessageDialog(null, "deu erro"); 
                                     }
                  }
            }
F

Não entendi direito, mas apontar o cursor para a posição anterior ao primeiro registro não funcionarioa??

rs.beforeFirst();
J

Galera, precso de ajuda será que algue não tem um exemplo completo ai para me ajudar, estou precisando criar estes bootões de navegação também!!!

F

na verdade, eu precisaria do código para o usuário poder navegar entre os registros do banco por meio de botões de navegação. Eu criei um código que não deu muito certo, pois o usuário não
consegue sair do primeiro registro ao clicar no botão "próximo registro". Olha como eu fiz: Qual seria a lógica correta para este caso? Aguardo resposta.

public void actionPerformed(ActionEvent e) {
    	        		  String url = "jdbc:mysql://127.0.0.1/javabd2";
       				      String usuario = "root";
       				      String senha = null;
       				
       	
                                               try{
                                       	 Connection conx = DriverManager.getConnection(url, usuario, senha);
                                         stt = conx.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                 ResultSet.CONCUR_UPDATABLE);
                                         ResultSet nx = stt.executeQuery("SELECT * FROM cliente"); 
                                     nx.last();
                                     int qtd = nx.getRow();
                                     nx.first();
                            
                              if (qtd>0){
                                 while(nx.next()){
                                    
                            
                                    txtNmCl.setText(nx.getString("cl_nome"));
                        			txtRgCl.setText(nx.getString("cl_rg"));
                        			txtCpfCl.setText(nx.getString("cl_cpf"));
                        			txtTelCl.setText(nx.getString("cl_tel"));
                        			txtEndCl.setText(nx.getString("cl_end"));
                        	
                        			 
                        	
                                  }
                         
                                  qtd--;
M

Voce pode ter como base isso daqui.


Da pra pegar o codigo fonte também.

F

Marky…

O q eu temo nessa abortagem é o acesso ao banco a cada clique…Porque não tem como fugir do neguinho ficar clicando por exemplo 30 vezes seguidas sem parar, no botão para navegar da letra A à letra C, por exemplo, quando tiver uma quantidade um pouco maior de registros…

Eu implementaria uma navegação a um list, por exemplo, e alimentaria esse list a cada 50, 100 registros…

É minha opinião.

Fernando

J

Interessante, mas como você faria esta implementação??

Trazendo uma lista de 50 registros, tem como postar ai algum exemplo???

To precisando de uma força!!

Valeu!!

F

Bom…eu dei uma idéia geral…agora teria que elaborar o algoritmo…mas nada complicado. Apenas ter variáveis de controle na navegação dos dados de um list…

Monta aí e depois mostra pra gente…qualquer dúvida estamos aí.

Fernando

Criado 16 de agosto de 2007
Ultima resposta 26 de jul. de 2010
Respostas 10
Participantes 7