Navegar pelos registros de uma tabela usando JButton's

: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!!!

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

Lindoélio,

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

Abraço.

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"); 
                                     }
                  }
            }

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

rs.beforeFirst();

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!!!

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--;

Voce pode ter como base isso daqui.


Da pra pegar o codigo fonte também.

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

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!!

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