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?

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());

        }