Problema ao ir para próxima linha

1 resposta
L

Tenho um form onde faz consulta no banco de dados e joga nos jTextFields as informações, só que ir para próxima linha não esta funcionando, e ir para anterior nem sei como faz. Já ir para ultima ou ir para primeira funciona corretamente.

Obs: Ele só funciona quando estou no ultimo registro da Tabela e aperto o botão Próximo onde ele vai pro registro que é o do início.

Agora queria saber como que faz para ir para uma linha anterior porque do jeito que estou fazendo ele da uma mensagem de erro:
“SQLException: Operação inválida na posição corrente do cursor.”

Obs: Não importando em que linha eu esteja da Tabela, ele da esse erro sempre para o botão voltar.

Codigo a seguir:

private void jButtonProximoActionPerformed(java.awt.event.ActionEvent evt) {                                               
        try {

            connect();
                if(rs.next()){
                     mostrar();
                }
            }  
            disconnect();

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }    

    private void jButtonAnteriorActionPerformed(java.awt.event.ActionEvent evt) {                                                
        try {
            connect();
            rs.previous();
            mostrar();
            disconnect();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }           

    private void jButtonPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {                                                
            try {
            connect();
            rs.first();
            mostrar();
            disconnect();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }                                               

    private void jButtonUltimoActionPerformed(java.awt.event.ActionEvent evt) {                                              
        try {
            connect();
            rs.last();
            mostrar();
            disconnect();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }     

 private void connect() {
        try {

            conn = DriverManager.getConnection(url, userDB, passDB);//Sem problemas aqui.
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE);
            rs = stmt.executeQuery("SELECT * FROM FORNECEDORES");

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }

 private void disconnect() {
        try {
            rs.close();
            stmt.close();
            conn.close();
            /*    if(conn.isClosed()==true){
            JOptionPane.showMessageDialog(null, "Está desconectado!");
            }
            else{
            JOptionPane.showMessageDialog(null, "Está conectado!");
            }*/
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }

    private void mostrar() {
        try {
            jTextFieldCod.setText(rs.getString("COD_FORNECEDOR"));
            jTextFieldNome.setText(rs.getString("NOME"));
            jTextFieldSite.setText(rs.getString("SITE"));
            jTextFieldCNPJ.setText(rs.getString("CNPJ"));
            jTextFieldEmail.setText(rs.getString("EMAIL"));
            jTextFieldCEP.setText(rs.getString("CEP"));
            jTextFieldEnd.setText(rs.getString("ENDEREC"));
            jTextFieldNum.setText(rs.getString("NUM"));
            jTextFieldCompl.setText(rs.getString("COMPL"));
            jTextFieldBairro.setText(rs.getString("BAIRRO"));
            jTextFieldCidade.setText(rs.getString("CIDADE"));
            jTextFieldFone1.setText(rs.getString("FONE1"));
            jTextFieldFone2.setText(rs.getString("FONE2"));
            jTextFieldFax.setText(rs.getString("FAX"));
            jTextAreaObs.setText(rs.getString("OBS"));
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }

Acabei de descobrir que quando ponho no código do botão Próximo…

private void jButtonProximoActionPerformed(java.awt.event.ActionEvent evt) {                                               
        try {

            connect();
  //################
                if(rs.next()){
                    if(rs.next()){
                        mostrar();
                    }
                }
  //################
            }  
            disconnect();

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
    }

…ele pula direto para a segunda linha da Tabela. E se eu add mais um if(rs.next()) ele pula sempre pra 3ª linha e assim vai. Logo deduzi que ele só esta se baseando apenas na 1ª linha sempre quando uso o comando rs.next().

Quem puder me ajudar agradeço desde então.

Leandro D. Mussio

1 Resposta

L

Consegui criando isso:

rs.relative(row++);
            if (rs.next()) {              
                    row = rs.getRow();
                    mostrar();
                    if(rs.isLast()){
                        JOptionPane.showMessageDialog(null,"Ultimo registro!");
                    }               
            }

Agora só falta descobrir como voltar.

Criado 19 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 1
Participantes 1