Duvidas: Busca no MySQL

3 respostas
A

Gente to quebrando a cabeça.
Eu tenho um botão de pesquisa que tem este código

String loj = lojaPesquisa.getSelectedItem().toString();
        BancoDados bd = new BancoDados();
        bd.AbreConexao();
        bd.Busca(loj);

        loja.setText(bd.loja);
        data.setText(bd.data);
        problema.setText(bd.problem);
        solicitante.setText(bd.nome);
        atendido.setText(bd.atendido);
        status.setText(bd.status);
        solucao.setText(bd.solucao);
        bd.FechaConexao();
E na minha classe do banco tem este metodo.
try {
                String sql = ("SELECT * FROM atendimento a where loja = '"+loj+"'");
                Statement st = connection.createStatement();
                ResultSet rs = st.executeQuery(sql);
                
                while (rs.next()) {
                    loja = rs.getString("loja");
                    problem = rs.getString("problema");
                    data = rs.getString("data");
                    atendido = rs.getString("atendido");
                    nome = rs.getString("nome");
                    status = rs.getString("status");
                    solucao = rs.getString("solucao");
                }
                
            } catch (SQLException e) {
		e.printStackTrace();
        	JOptionPane.showMessageDialog(null,e.getMessage());
            } finally {
                FechaConexao();
            }

Quando eu faço a pesquisa ele faz normal mas ele me trás o ultimo registro.
Gostaria que ele me desse o primeiro. Se eu colocar rs.first a aplicação trava.
E a outra duvida é que tenho um botão proximo que fica navegando e não sei como implementar isto!

3 Respostas

T

while (rs.next()) { loja = rs.getString("loja"); problem = rs.getString("problema"); data = rs.getString("data"); atendido = rs.getString("atendido"); nome = rs.getString("nome"); status = rs.getString("status"); solucao = rs.getString("solucao"); }

Este trecho faz um loop. Por isso te traz o ultimo. Você faz um loop e passa pelo primeiro até o ultimo registro encontrado.

Se não é uma busca por primary key, ele deveria retornar uma lista ou array de objetos.

A

thiagomoraes:
while (rs.next()) { loja = rs.getString("loja"); problem = rs.getString("problema"); data = rs.getString("data"); atendido = rs.getString("atendido"); nome = rs.getString("nome"); status = rs.getString("status"); solucao = rs.getString("solucao"); }

Este trecho faz um loop. Por isso te traz o ultimo. Você faz um loop e passa pelo primeiro até o ultimo registro encontrado.

Se não é uma busca por primary key, ele deveria retornar uma lista ou array de objetos.

e como eu faria isto?
tira o while?

T

Se ele retornar mais de um registro o ideal seria retornar uma lista.

Se for somente um registro este código funciona.

Se você precisa retornar somente o ultimo, você pode chamar este método e pega o ultimo da lista. Ou fazer uma consulta que retorne somente o ultimo registro que possui aquela loja.

Na verdade há várias opções para você.

Criado 9 de março de 2010
Ultima resposta 9 de mar. de 2010
Respostas 3
Participantes 2