Dúvidas para navegação de registros em JAVA

6 respostas
D

Bom dia Pessoal!

Bom estou com a seguinte dúvida, criei um evento no meu botão PRÓXIMO REGISTRO, mas ele só funciona na primeira vez quando executado, se eu pressionar o botão novamente, ele não busca mais nenhum registro, creio estar faltando algum detalhe mas não sei o que é, segue meu código:

Conexao_BD BD = new Conexao_BD();
    
    boolean consulta=true; 
    try{ 
 
     BD.Stm = BD.Con.createStatement(BD.RS.TYPE_SCROLL_INSENSITIVE,  
                                                BD.RS.CONCUR_UPDATABLE);
     BD.RS  = BD.Stm.executeQuery("SELECT * FROM cad_categoria ");
 
        if (BD.RS.next())
        { 
            txcodcategoria.setText(BD.RS.getString("cat_codigo"));
            txcategoria.setText   (BD.RS.getString("cat_nome"));
            txdescricao.setText   (BD.RS.getString("cat_descricao"));
        }

       }  catch(SQLException e){
       }

Seria muito grato se alguém me ajudar!

6 Respostas

ViniGodoy

Cada vez que você roda o Statement, o banco reposiciona o ResultSet no início.

O certo seria:
a) Executar o ResultSet apenas uma vez, ao carregar a tela;
b) Nos botões próximo e anterior, apenas navegar no resultset.

Claro, trabalhar diretamente com ResultSet na tela é a forma que desenvolvíamos software lá pelos anos 90.
Se você quiser evitar os problemas que já descobrimos nos últimos 20 anos de informática, divida seu software em camadas de objetos.

D

Como navegaria então usando somente o resultset?

ViniGodoy

Chamando next() ou previous() mas SEM rodar a consulta novamente.

D

Seria assim?

Conexao_BD BD = new Conexao_BD();

    try {
       BD.Stm = BD.Con.createStatement(BD.RS.TYPE_SCROLL_INSENSITIVE, 
                                                  BD.RS.CONCUR_READ_ONLY);

        if (BD.RS.next()){
        
    txcodcategoria.setText(BD.RS.getString("cat_codigo"));  
    txcategoria.setText   (BD.RS.getString("cat_nome"));  
    txdescricao.setText   (BD.RS.getString("cat_descricao"));  

        }
    } catch (SQLException ex) {
        Logger.getLogger(Cad_categoria.class.getName()).log(Level.SEVERE, null, ex);
    
    }
D

Seria assim?

Conexao_BD BD = new Conexao_BD();
    
        try {
           BD.Stm = BD.Con.createStatement(BD.RS.TYPE_SCROLL_INSENSITIVE, 
                                                      BD.RS.CONCUR_READ_ONLY);

            if (BD.RS.next()){
            
        txcodcategoria.setText(BD.RS.getString("cat_codigo"));  
        txcategoria.setText   (BD.RS.getString("cat_nome"));  
        txdescricao.setText   (BD.RS.getString("cat_descricao"));  

            }
        } catch (SQLException ex) {
            Logger.getLogger(Cad_categoria.class.getName()).log(Level.SEVERE, null, ex);
        
        }
D

Valeu, consegui executar aqui! Obrigado Vini!

Criado 29 de setembro de 2012
Ultima resposta 30 de set. de 2012
Respostas 6
Participantes 2