Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Verificar se não há retorno na pesquisa

Boa tarde galera,

Cá estou eu novamente perturbando vocês. Enquanto posto isso aqui sigo pesquisando a solução como sempre faço.

Meu problema dessa vez é o seguinte:

  • Estou tentando criar a funcionalidade de log para meu sistema de portaria.
  • Estou tentando verificar se o ResultSet está sem retorno, caso esteja sem retorno lança uma informação na tabela de log além de apresentar a mensagem que não existe registro para a pesquisa realizada.
  • Caso haja retorno, a tabela será preenchida normalmente. Ao menos essa é a ideia.
public Iterable<Avisos> ListarAvisosPendentesPorApartamentoPersonalizado_Tipo2(String apartamento) throws UnknownHostException, SQLException {

        Connection con = ConnectionFactory.getConnection();

        PreparedStatement stmt = null;
        ResultSet rs = null;

        List<Avisos> avisos = new ArrayList<>();

        try {

        String sql = "select avisos.id, apartamento, bloco, aviso, avisos_status.status from avisos \n" +
                    "inner join avisos_status on avisos_status.id = avisos.status\n" +
                    "where avisos.status = 0 and apartamento = ?";

            stmt = con.prepareStatement(sql);
            stmt.setString(1, apartamento);

            rs = stmt.executeQuery();

            if (rs.next() == false){

                System.out.println("teste");
                JOptionPane.showMessageDialog(null,"Nenhum registro foi encontrado para essa pesquisa");
                log.logPesquisaAvisoPendentePorApartamentoErro();

            } else {

                while (rs.next()) {

                    Avisos aviso = new Avisos();

                    aviso.setId(rs.getInt("id"));
                    aviso.setApartamento(rs.getString("apartamento"));
                    aviso.setBloco(rs.getString("bloco"));
                    aviso.setAviso(rs.getString("aviso"));

                    avisos.add(aviso);

                    log.logPesquisaAvisoPendentePorApartamento();

                } 

        }

        } catch (SQLException ex) {

            Logger.getLogger(AvisosDAO.class.getName()).log(Level.SEVERE, null, ex);

            System.out.println("Erro no método ListarAvisosPendentesPorApartamentoPersonalizado_Tipo2() na classe AvisosDAO");

        } finally {

            ConnectionFactory.closeConnection(con, stmt, rs);

        }

        return avisos;
    }

Esse é o jeito que eu fiz, porém dessa forma apenas me mostra a mensagem "Nenhum registro foi encontrado para essa pesquisa" em caso de não haver registro na tabela.

Porém quando tem registro, nada acontece.

Será que alguém consegue me dar uma luz?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Att. Problema resolvido.

Ao invés de usar if/else/while usei if/else/do/while, dessa forma:

            if (rs.next() == false){

                System.out.println("teste");
                JOptionPane.showMessageDialog(null,"Nenhum registro foi encontrado para essa pesquisa");
                log.logPesquisaAvisoPendentePorApartamentoErro();

            } else {

                do {

                    Avisos aviso = new Avisos();

                    aviso.setId(rs.getInt("id"));
                    aviso.setApartamento(rs.getString("apartamento"));
                    aviso.setBloco(rs.getString("bloco"));
                    aviso.setAviso(rs.getString("aviso"));

                    avisos.add(aviso);

                    log.logPesquisaAvisoPendentePorApartamento();


                } while (rs.next());

        }