GARANTIR DESCONTO

Fórum Como utilizar ResultSet next(); previous(); last(); e first(); #567123

06/10/2011

0

Tentei implementar os botões primeiro, anterior, próximo e último, mas não tive êxito. Estou usando PreparedStatement com ResultSet. Os dados retornam em JTextField (nessa tela não vou usar JTable, pois é uma tela de cadasto de poucos usuários, além disso enfiei na cabeça que quero fazer esses botões funcionarem desse jeito mesmo). Efetuo a consulta com um PreparedStatement e tentei implementar os botões com outro PreparedStatement utilizando o mesmo ResultSet e tentei, também, utilizar outro ResultSet. Estou fazendo a consulta pelo nome (veja código abaixo) e tentando implementar os botôes com o dado do campo Nome. Já inseri RS.previous(), next, last... etc em várias partes do código e não obtive êxito. Ao clicar nos botões, retorna a conexão, mas acontece coisa nenhuma. Talvez o meu erro esteja na lógica. Se alguém tiver qualquer sugestão, seja na lógica, seja para mudar o código, será bem-vinda. O banco é o PostgreSQL 9.0.4. A IDE é o NetBeans 7.0.1. O sistema operacional é o Windows 7 Professional. RESPOSTA DO PROBLEMA: O cenário é o mesmo de cima: PreparedStatement com ResultSet e os dados retornando em JTextField e JComboBox. No campo pesquisa pode-se digitar somente um caractere ou uma sequência de caracteres e ao clicar no botão 'buscar' os dados retornam nos campos Nome, Login, Senha, ID, Nível de Acesso(JComboBox) e Status(JComboBox) da TelaUsuario. São 5 JTextField, 9 JButton e 2 JComboBox. O JTextField do campo ID fica invisível na tela. Veja imagem da tela abaixo. A navegação pelos botões se dá tranquilamente, porém, eles só navegam nos dados retornados pelo ResultSet, o que é mais do que satisfatório mesmo para uma tabela com vários usuários. Mas pode-se, também, implementar uma JTable. Na classe que levar o método 'selecionar', o ResultSet RS deve ser declarado 'público' no início da classe: public ResultSet RS; Não esqueçam que o ResultSet (ou a conexão mesmo) deve ser fechado ao fechar-se a janela ou pode criar um bloco 'finally' com essa finalidade (recomendo criar um bloco 'finally'). Seguem os códigos para quem quiser adaptar à sua tela de pesquisa e navegação. São códigos básicos que podem e devem ser melhorados. Dei uma melhorada no código e tirei da exceção do método mostrar_dados os testes do ResultSet, pois não é recomendável tratar da navegação gerando exceções. Estou mexendo no código de acordo com a minha disponibilidade de tempo. Dei uma melhorada no código em 30/10/2011.
//*****MÉTODO RESPONSÁVEL POR CONSULTAR DADOS NAS TABELAS usuario do BD e Usuario.java(getters e setters) do Sistema*****
        public List selecionar(tabelas.Usuario cadast) throws SQLException, Exception {
            //CRIA O PREPAREDSTATEMENT:
            PreparedStatement sqls;
            sqls = this.conessao.prepareStatement("SELECT * FROM usuario WHERE nome LIKE ?",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            sqls.setString(1, "%" + TelaUsuario.tx_pesquisa.getText() + "%");
           //O coringa "%" deve ser colocado no PreparedStatement e não na string SQL,
          //pois é ele quem vai trabalhar com os dados da consulta. Você pode colocar somente um coringa, pode trocar a posição dele(s), etc...
            //O ResultSet RS recebe os dados da consulta:
            RS = sqls.executeQuery();
            //Se nenhum dado for encontrado retorna mensagem, limpa os campos e gera exceção:
            if (!RS.next()) {
                            JOptionPane.showMessageDialog(null, "Nenhum registro foi encontrado com essa pesquisa!");
                            TelaUsuario.tx_nome.setText(null);
                            TelaUsuario.tx_login.setText(null);
                            TelaUsuario.tx_senha.setText(null);
                            TelaUsuario.tx_idusuario.setText(null);
                            TelaUsuario.tx_pesquisa.setText(null);//Limpa o campo Pesquisa.
                            TelaUsuario.tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.*/
                            throw new Exception("Nenhum registro foi encontrado com essa pesquisa!");   
                        }
                        else {
                        //SENÃO CRIA O OBJETO LISTACONTATO DO TIPO LIST QUE ARMAZENARÁ OS REGISTROS RETORNADOS:
                        List<tabelas.Usuario> listacontato = new ArrayList<tabelas.Usuario>();
                            //Instanciando o objeto cadast:
                            cadast.setId_Usuario(RS.getInt("id_usuario"));
                            cadast.setNome(RS.getString("nome"));
                            cadast.setLogin(RS.getString("login"));
                            cadast.setSenha(RS.getString("senha"));
                            cadast.setNivelAcesso(RS.getObject("nivelacesso"));
                            cadast.setStatus(RS.getObject("status"));
                            //Inserindo dados na lista
                            listacontato.add(cadast);     
                        //Fecha o ResultSet:
                        //RS.close();
                        //Fecha o PreparedStatement:
                        //sqls.close();
                        //Retorna os dados:
                        return listacontato;
               }
       }

 //Código do botão BUSCAR:
    private void bt_pesquisaActionPerformed(java.awt.event.ActionEvent evt) {                                            
        int id_usuario = 0;
        String nome = null;
        String login = null;
        String senha = null;
        Object nivelacesso = null;
        Object status = null;
        // TODO add your handling code here:
        try {
                //UsuarioDoom doom = new UsuarioDoom(); Esses objetos você pode implementar aqui ou no início da classe.
                //Usuario cadastro = new Usuario(); Optei por implementar no início(preguiça de digitar).
                //Se o campo pesquisa estiver em branco ou nulo mostra a mensagem:
                if (tx_pesquisa.getText().equals("")|| tx_pesquisa.getText() == null){
                JOptionPane.showMessageDialog(this, "Acha que sou adivinho?\n      Digite alguma coisa!");
                tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.                
                } 
                //Senão executa a consulta:    
                else {
                    //CHAMANDO O MÉTODO QUE PESQUISA DADOS:
                    doom.selecionar(cadastro);
                    //Cria o objeto listacadastro que recebe os dados do método 'selecionar':
                    List<Usuario> listaCadastro = doom.selecionar(cadastro);
                    for (Usuario cursor : listaCadastro) {
                    id_usuario = (cursor.getId_Usuario());
                    nome = (cursor.getNome());
                    login = (cursor.getLogin());
                    senha = (cursor.getSenha());
                    nivelacesso = (cursor.getNivelAcesso());
                    status = (cursor.getStatus());
                    }
                    //Pega os dados e mostra nos campos da TelaUsuario(aqui nesse 'else' poderia ter criado um método e chamado pelo nome):
                    tx_idusuario.setText(Integer.toString(id_usuario));
                    tx_nome.setText(nome);
                    tx_login.setText(login);
                    tx_senha.setText(senha);
                    cb_nivelacesso.setSelectedItem(nivelacesso);
                    cb_status.setSelectedItem(status);
                    tx_pesquisa.setText(null);//Limpa o campo Pesquisa.
                    tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            } catch (Exception ex) {
                Logger.getLogger(TelaUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //Botão Primeiro:
    private void btprimeiroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                if (doom.RS.isFirst() == true) {
                        JOptionPane.showMessageDialog(this, "Este é o primeiro registro da pesquisa feita!");
                        doom.RS.first();
                    }
                else {
                    doom.RS.next();
                    doom.RS.first();
                    mostrar_dados();
            }
          }
        }
        catch (SQLException erro) {
            Logger.getLogger(TelaUsuario.class.getName()).log(Level.SEVERE, null, erro);
            JOptionPane.showMessageDialog(this,"Este é o primeiro registro." + erro);
        }
    }                                          
    //Botão Anterior:
    private void btanteriorActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                if (doom.RS.isFirst() == true) {
                        JOptionPane.showMessageDialog(this, "Este é o primeiro registro da pesquisa feita!");
                        doom.RS.first();
                    }
                else {
                    doom.RS.isFirst();
                    doom.RS.previous();
                    mostrar_dados();
            }
          }
        }
        catch (SQLException erro) {
            JOptionPane.showMessageDialog(this, " Não foi possível ir para o registro anterior. " + erro);
        }
    }                                          
    //Botão Próximo:
    private void btproximoActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                if (doom.RS.isLast() == true) {
                        JOptionPane.showMessageDialog(this, "Este é o último registro da pesquisa feita!");
                        doom.RS.last();
                    }
                else {
                    doom.RS.isLast();
                    doom.RS.next();
                    mostrar_dados();            
            }
          }
        }
        catch (SQLException erro) {
            JOptionPane.showMessageDialog(this, " Não foi possível ir para o próximo registro. " + erro);
        }
    }                                         
    //Botão Último:
    private void btultimoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                if (doom.RS.isLast() == true) {
                        JOptionPane.showMessageDialog(this, "Este é o último registro da pesquisa feita!");
                     }
                else {
                    doom.RS.last();
                    mostrar_dados();
             }
          }     
        }
        catch (SQLException erro) {
            JOptionPane.showMessageDialog(this, " Não foi possível ir para o próximo registro. " + erro);
        }
    }

//MÉTODO QUE MOSTRA OS DADOS AO SE NAVEGAR PELOS BOTÕES 'PRIMEIRO, ANTERIOR, PRÓXIMO E ÚLTIMO':
    public void mostrar_dados() throws SQLException {
        try { //Tente:
            //Pegar os dados e mostrar nos campos da TelaUsuário:
            tx_idusuario.setText(doom.RS.getString("id_usuario"));
            tx_nome.setText(doom.RS.getString("nome"));
            tx_login.setText(doom.RS.getString("login"));
            tx_senha.setText(doom.RS.getString("senha"));
            cb_nivelacesso.setSelectedItem(doom.RS.getObject("nivelacesso"));
            cb_status.setSelectedItem(doom.RS.getObject("status"));
        } catch (SQLException erro) { //Ou capture o que acontecer(exceções):
                JOptionPane.showMessageDialog(this, " Não localizou dados!" + erro);
             }
        }

//Classe Usuario
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tabelas;

/**@author sarnento
 * Esta classe cria a tabela Usuario.java que implementa os getters e os setters
* e armazena temporariamente os dados vindos do BD.
 *  
 */
public class Usuario {
    public int id_usuario;
    public String nome;
    public String login;
    public String senha;
    public Object nivelacesso;
    public Object status;
        
    // Métodos get e set para id_usuario, nome, login, senha, nivelacesso e status.
    public int getId_Usuario() {
        return id_usuario;
    }
    public void setId_Usuario(int id_usuario) {
        this.id_usuario = id_usuario;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
    public String getSenha() {
        return senha;
    }
    public void setSenha(String senha) {
        this.senha = senha;
    }
     public Object getNivelAcesso() {
        return nivelacesso;
    }
    public void setNivelAcesso(Object nivelacesso) {
        this.nivelacesso = nivelacesso;
    }
    public Object getStatus() {
        return status;
    }
    public void setStatus(Object status) {
        this.status = status;
    }
}

[i][/i]
Julio Henrique

Julio Henrique

Responder

Posts

17/10/2011

Julio Henrique

Citação.
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="sarnento"]Citação.
?
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="sarnento"]Já tentei de todas as maneiras implementar os botões primeiro, anterior, próximo e último, mas não tive êxito. Estou usando PreparedStatement com ResultSet. Os dados retornam em JTextField (nessa tela não vou usar JTable, pois é uma tela de cadasto de poucos usuários, além disso enfiei na cabeça que quero fazer esses botões funcionarem desse jeito mesmo). Efetuo a consulta com um PreparedStatement e tentei implementar os botões com outro PreparedStatement utilizando o mesmo ResultSet e tentei, também, utilizar outro ResultSet. Estou fazendo a consulta pelo nome (veja código abaixo) e tentando implementar os botôes com o dado do campo Nome. Já inseri RS.previous(), next, last... etc em várias partes do código e não obtive êxito. Ao clicar nos botões, retorna a conexão, mas acontece coisa nenhuma. Talvez o meu erro esteja na lógica. Se alguém tiver qualquer sugestão, seja na lógica, seja para mudar o código, será bem-vinda. O banco é o PostgreSQL 9.0.4. A IDE é o NetBeans 7.0.1. O sistema operacional é o Windows 7 Professional. JÁ QUE NINGUÉM RESPONDEU... eu respondo depois de dez dias. O cenário é o mesmo de cima: PreparedStatement com ResultSet e os dados retornando em JTextField e JComboBox. Na pesquisa o nome é digitado num JTextField(campo Pesquisa) e ao clicar no botão 'buscar', os dados retornam nos campos Nome, Login, Senha, ID, Nível de Acesso(JComboBox) e Status(JComboBox) da TelaUsuario. São 5 JTextField, 9 JButton e 2 JComboBox. O JTextField do campo ID fica invisível na tela. A navegação pelos botões se dá tranquilamente, porém, eles só navegam nos dados retornados pelo ResultSet. Para navegar por todos os dados você pode implementar direto no Banco de Dados ou no código mesmo. Pode-se, também, implementar uma JTable. Na classe que levar o método 'selecionar', o ResultSet RS deve ser declarado 'público' no início da classe: public ResultSet RS; Não esqueçam que o ResultSet (ou a conexão mesmo) deve ser fechado ao fechar-se a janela ou pode criar um bloco 'finally' com essa finalidade(recomendo criar um bloco 'finally'). Seguem os códigos para quem quiser adaptar à sua tela de pesquisa e navegação. São códigos básicos que podem e devem ser melhorados.
//*****MÉTODO RESPONSÁVEL POR CONSULTAR DADOS NAS TABELAS usuario do BD e Usuario.java(getters e setters) do Sistema*****
        public List selecionar(tabelas.Usuario cadast) throws SQLException, Exception {
            //CRIA O PREPAREDSTATEMENT:
            PreparedStatement sqls;
            sqls = this.conessao.prepareStatement("SELECT * FROM usuario WHERE nome LIKE ?",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            sqls.setString(1, TelaUsuario.tx_pesquisa.getText());
            //O ResultSet RS recebe os dados da consulta:
            RS = sqls.executeQuery();
            //Se nenhum dado for encontrado retorna mensagem, limpa os campos e gera exceção:
            if (!RS.next()) {
                            JOptionPane.showMessageDialog(null, "Nenhum registro foi encontrado com esse nome!");
                            TelaUsuario.tx_nome.setText(null);
                            TelaUsuario.tx_login.setText(null);
                            TelaUsuario.tx_senha.setText(null);
                            TelaUsuario.tx_idusuario.setText(null);
                            TelaUsuario.tx_pesquisa.setText(null);//Limpa o campo Pesquisa.
                            TelaUsuario.tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.*/
                            throw new Exception("Nenhum registro foi encontrado com esse nome!");   
                        }
                        else {
                        //SENÃO CRIA O OBJETO LISTACONTATO DO TIPO LIST QUE ARMAZENARÁ OS REGISTROS RETORNADOS:
                        List<tabelas.Usuario> listacontato = new ArrayList<tabelas.Usuario>();
                            //Instanciando o objeto cadast:
                            cadast.setId_Usuario(RS.getInt("id_usuario"));
                            cadast.setNome(RS.getString("nome"));
                            cadast.setLogin(RS.getString("login"));
                            cadast.setSenha(RS.getString("senha"));
                            cadast.setNivelAcesso(RS.getObject("nivelacesso"));
                            cadast.setStatus(RS.getObject("status"));
                            //Inserindo dados na lista
                            listacontato.add(cadast);
                                  
                        //Fecha o ResultSet:
                        //RS.close();
                        //Fecha o PreparedStatement:
                        //sqls.close();
                        //Retorna os dados:
                        return listacontato;
             }
    }

 
//Código do botão PESQUISA:
    private void bt_pesquisaActionPerformed(java.awt.event.ActionEvent evt) {                                            
        int id_usuario = 0;
        String nome = null;
        String login = null;
        String senha = null;
        Object nivelacesso = null;
        Object status = null;
        // TODO add your handling code here:
        try {
                //UsuarioDoom doom = new UsuarioDoom(); Esses objetos você pode implementar aqui ou no início da classe.
                //Usuario cadastro = new Usuario(); Optei por implementar no início(preguiça de digitar).
                //Se o campo pesquisa estiver em branco ou nulo mostra a mensagem:
                if (tx_pesquisa.getText().equals("")|| tx_pesquisa.getText() == null){
                JOptionPane.showMessageDialog(this, "Acha que sou adivinho?\n      Digite um nome!");
                tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.                
                } 
                //Senão executa a consulta:    
                else {
                    //CHAMANDO O MÉTODO QUE PESQUISA DADOS:
                    doom.selecionar(cadastro);
                    //Cria o objeto listacadastro que recebe os dados do método 'selecionar':
                    List<Usuario> listaCadastro = doom.selecionar(cadastro);
                    for (Usuario cursor : listaCadastro) {
                    id_usuario = (cursor.getId_Usuario());
                    nome = (cursor.getNome());
                    login = (cursor.getLogin());
                    senha = (cursor.getSenha());
                    nivelacesso = (cursor.getNivelAcesso());
                    status = (cursor.getStatus());
                    }
                    //Pega os dados e mostra nos campos da TelaUsuario(aqui nesse 'else' poderia ter criado um método e chamado pelo nome):
                    tx_idusuario.setText(Integer.toString(id_usuario));
                    tx_nome.setText(nome);
                    tx_login.setText(login);
                    tx_senha.setText(senha);
                    cb_nivelacesso.setSelectedItem(nivelacesso);
                    cb_status.setSelectedItem(status);
                    tx_pesquisa.setText(null);//Limpa o campo Pesquisa.
                    tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            } catch (Exception ex) {
                Logger.getLogger(TelaUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

//Botão Primeiro:
    private void btprimeiroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                TelaUsuario.tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                   doom.RS.next();
                   doom.RS.first();
                   mostrar_dados();
                   navega = 1;
            }
        } catch (SQLException erro) {
            Logger.getLogger(TelaUsuario.class.getName()).log(Level.SEVERE, null, erro);
            JOptionPane.showMessageDialog(this,"Este é o primeiro registro." + erro);
        }
    }

//Botão Anterior:
    private void btanteriorActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                TelaUsuario.tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                doom.RS.isFirst();
                doom.RS.previous();
                mostrar_dados();
                navega = 1;
            }
        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(this, " Não foi possível ir para o registro anterior. " + erro);
        }
    }

//Botão Próximo:
    private void btproximoActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                TelaUsuario.tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                doom.RS.isLast();
                doom.RS.next();
                mostrar_dados();
                navega = 2;            
            }
        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(this, " Não foi possível ir para o próximo registro. " + erro);
        }
    }

//Botão Último:
    private void btultimoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        try {
            //UsuarioDoom doom = new UsuarioDoom();
            if (tx_nome.getText().equals("")|| tx_nome.getText() == null){
                JOptionPane.showMessageDialog(this, "Faça uma pesquisa primeiro!");
                TelaUsuario.tx_pesquisa.requestFocusInWindow();//Seta o cursor no campo Pesquisa.
                }
            else {
                doom.RS.last();
                mostrar_dados();
                navega = 2;
            }
        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(this, " Não foi possível ir para o próximo registro. " + erro);
        }
    }

//MÉTODO QUE MOSTRA OS DADOS AO SE NAVEGAR PELOS BOTÕES 'PRIMEIRO, ANTERIOR, PRÓXIMO E ÚLTIMO':
    public void mostrar_dados() throws SQLException {
        try { //Tente:
            //UsuarioDoom doom = new UsuarioDoom();
            //Pegar os dados e mostrar nos campos da TelaUsuário:
            tx_idusuario.setText(doom.RS.getString("id_usuario"));
            tx_nome.setText(doom.RS.getString("nome"));
            tx_login.setText(doom.RS.getString("login"));
            tx_senha.setText(doom.RS.getString("senha"));
            cb_nivelacesso.setSelectedItem(doom.RS.getObject("nivelacesso"));
            cb_status.setSelectedItem(doom.RS.getObject("status"));
        } catch (SQLException erro) { //Ou capture o que acontecer(exceções):
            if (navega == 1) {
                JOptionPane.showMessageDialog(this, "Este é o primeiro registro com esse nome!");
                doom.RS.first();//Aqui posiciona o ResultSet para evitar clicar duas vezes no botão 'próximo' quando está no primeiro registro.
            } else if (navega == 2) {
                JOptionPane.showMessageDialog(this, "Este é o último registro com esse nome!");
                doom.RS.last();//Aqui posiciona o ResultSet para evitar clicar duas vezes no botão 'anterior' quando está no último registro.

            } else {
                JOptionPane.showMessageDialog(this, " Não localizou dados. ERRO: " + erro);
            }
            navega = 0;
        }
    }
AQUI A CITAÇÃO [quote="sarnento"] [...] JÁ QUE NINGUÉM RESPONDEU... eu respondo depois de dez dias. [...]
[i]eu me perguntaria PORQUE NINGUÉM respondeu...[/i] Se NINGUÉM entendeu o seu problema, ou se NINGUÉM sabe como resolver, talvez até por não se tratar de [url="http://javafree.uol.com.br/viewforum.jbb?forum.idForum=1"][u]Java Básico[/u][/url], é claro que NINGUÉM vai responder. sem esquecer que, mesmo que difícil de acreditar, NINGUÉM aqui é obrigado a responder, NINGUÉM aqui (que eu saiba) é pago para resolver os seus problemas, o Javafree não é hotline paga (você pagou??),... (quantas vezes vou ter que escrever isso!)
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="simu"] sem esquecer que, mesmo que difícil de acreditar, NINGUÉM aqui é obrigado a responder, NINGUÉM aqui (que eu saiba) é pago para resolver os seus problemas, o Javafree não é hotline paga (você pagou??),... (quantas vezes vou ter que escrever isso!)
O jeito é gente montar um esquema de contas pagas, [b]Javafree Premium Membership[/b], dae a gente é pago. Porque obrigado a responder parece que a gente já é mesmo.
Responder

Gostei + 0

17/10/2011

Douglas Eric

Calma cara. Para quê todo esse nervosismo? Só fiz uma observação. Eu sei que ninguém é obrigado a responder. Eu sei que quem cuida do JavaFree também precisa ganhar a vida e provavelmente não tem 24 horas de disponibilidade. Minha observação foi justamente por que vocês dois (Simu e Sekkuar) são praticamente os únicos que respondem os tópicos.
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="sarnento"]Calma cara. Para quê todo esse nervosismo? Só fiz uma observação.
ahhh, é só uma observação?! [quote="sarnento"] [...] JÁ QUE NINGUÉM RESPONDEU... eu respondo depois de dez dias. [...]
e as letras maiúsculas não tem nada a significar, nem os "dez dias"... OK, me desculpa, é que o fórum está cheio de [i]observação[/i]. O que eu escrevi então também é só uma [i]observação[/i], nada mais! BOM, eu vou trabalhar um pouco para poder pagar a internet e quem sabe continuar no fórum...
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="simu"] BOM, eu vou trabalhar um pouco para poder pagar a internet e quem sabe continuar no fórum...
kkkk aposto que a internet na Alemanha é mais barato que aqui no Brasil. Ainda bem que eu estou usando a internet do trabalho, a de casa é uma #$$@#$
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="sekkuar"][quote="simu"] BOM, eu vou trabalhar um pouco para poder pagar a internet e quem sabe continuar no fórum...
kkkk aposto que a internet na Alemanha é mais barato que aqui no Brasil. Ainda bem que eu estou usando a internet do trabalho, a de casa é uma #$$@#$
EUR 40,00 (39,90) por mês: DSL, telefone FLAT para telefones normais (não celulares nem serviços). Não tenho idéia do que custa ai... [[]]
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="simu"][quote="sekkuar"][quote="simu"] BOM, eu vou trabalhar um pouco para poder pagar a internet e quem sabe continuar no fórum...
kkkk aposto que a internet na Alemanha é mais barato que aqui no Brasil. Ainda bem que eu estou usando a internet do trabalho, a de casa é uma #$$@#$
EUR 40,00 (39,90) por mês: DSL, telefone FLAT para telefones normais (não celulares nem serviços). Não tenho idéia do que custa ai... [[]] Quantos mbps? aqui custa em média R$ 80.00 uma internet de 1 mbps quanto mais mbps, mais caro fica, a tecnologia aqui é indiferente. e claro, tem limite de download, se passar do limite, baixa pra 10% da velocidade.
Responder

Gostei + 0

17/10/2011

Douglas Eric

[quote="sekkuar"][quote="simu"]...
Quantos mbps? aqui custa em média R$ 80.00 uma internet de 1 mbps quanto mais mbps, mais caro fica, a tecnologia aqui é indiferente. e claro, tem limite de download, se passar do limite, baixa pra 10% da velocidade.
preço é para 6m, mas a oferta oficial 16m, realmente no máximo uns 12m se atingir o limite, baixa para 1m
Responder

Gostei + 0

18/10/2011

Ronaldo Santos

public void sql(String sql) { try { rs= st.executeQuery(sql); } catch(SQLException ex){ JOptionPane.showMessageDialog(null, ex); } conectar= new Conexao(); conectar.sql("Select * from contatos"); conectar.rs.first(); txtNome.setText(conectar.rs.getString("nome")); Bingo!!!!
Responder

Gostei + 0

19/10/2011

Alekine123

public void sql(String sql) { try { rs= st.executeQuery(sql); } catch(SQLException ex){ JOptionPane.showMessageDialog(null, ex); } conectar= new Conexao(); conectar.sql("Select * from contatos"); conectar.rs.first(); txtNome.setText(conectar.rs.getString("nome")); Bingo!!!!
Esse seria o código do seu botão 'primeiro'?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar