Botão para proximo resultado SQL com JTextField

3 respostas
caiofabioa
Olá pessoal, minha dúvida, eu acho que é simples rsrs, eu pesquisei algo aqui e nao achei, oq ue eu achei que poderia dar certo eu nao consegui entender e na implementação deu tudo errado. Eu tenho esse código abaixo que fuinciona bem, mas ele pega o resgistro do ultimo apenas, eu tenho um JButton chamado proximoResultado como faço para ele apresentar os proximos resultados no JTextField?
private void pesquisar() {

        try {

            Class.forName("com.mysql.jdbc.Driver");

            Connection con;

            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/sigi", "root", "caiocaio");

            String query = "SELECT * FROM membros WHERE nome_completo LIKE ?";

            PreparedStatement cmd;

            cmd = con.prepareStatement(query);

            cmd.setString(1, "%" + textoPesquisa.getText() + "%");

            ResultSet rs;

            rs = cmd.executeQuery();

            while (rs.next()) {
                ID.setText(rs.getString("id_membro"));
                nome_completo.setText(rs.getString("nome_completo"));
                data_nascimento.setText(rs.getString("data_nascimento"));
                rg.setText(rs.getString("rg"));
                cpf.setText(rs.getString("cpf"));
            }
        } catch (ClassNotFoundException ex) {
            System.out.println("Não foi possivel encontrar a classe");
        } catch (SQLException ex) {
            System.out.println("Ocorreu um erro no SQL" + ex.getMessage());
        }
    }

Ooobrigado

3 Respostas

R_chieck

Ola, seguinte, seu problema está no seu while.
a cada iteração do while(ou seja, registro que vier do banco) ele seta outro valor a seus campos, logo, no final do laço seus campos terão apenas o ultimo valor.
para resolver isso teria que adicionar os valores a uma lista e depois poderias navegar livremente(para frente e para traz) dentro dela pegando os registros.
Caso apenas queira ir pegando o proximo quando clicado no jbutton, basta tirar o while, imagine seu rs como sua lista de registros que vieram do banco, então no evento click do jbutton vc coloca rs.next().
Aparentemente estas pegando dados de pessoas, então ainda eu recomendaria criar uma classe Pessoa, ou Cliente, conforme seu caso, com os campos que tens na sua tabela de onde estas fazendo esta consulta. ai então no while voce popularia uma lista de Pessoas, que vai ser seu resultado da consulta, isto lhe da uma abstração maior, e muito mais flexibilidade, sem contar a questão dos padrões, orientação a objeto…

caiofabioa

Quer dizer que tenho que fazer um array para armazenar essa consulta?preciso depois dar um if para informar que nao há mais resultados?

R_chieck

Sim, mais ou menos isso, recomendo usar uma List.(lista de objetos) é mais facil sua navegação pelos objetos e é variavel, não precisa definir tamanho, somente ir adicionando objetos.
sintaxe:

List<Tipo> listaTipo = new ArrayList<Tipo>();
Criado 31 de maio de 2012
Ultima resposta 2 de jun. de 2012
Respostas 3
Participantes 2