Testando Retorno do Banco

2 respostas
T

Prezados preciso saber a melhor maneira de testar um retorno do Banco de Dados tipo:

String sql = "select s.cd_servico as cd_servico, s.ds_servico as ds_servico, e.cd_servico as ecd_servico " +
                   "from dbamv.servico s, dbamv.escala_cirurgia e " +
                   "where e.cd_servico = s.cd_servico " +
                   "and dt_escala = ? " +
                   "and cd_sal_cir = ? " +
                   "and tp_turno = ? ";
      
      PreparedStatement stmt = con.prepareStatement(sql);
             
        ResultSet rs = null;
        
        stmt.setString(1,data);
        stmt.setInt(2,sala);
        stmt.setInt(3,turno);
        
        //faz primeira busca no banco de dados
        
        rs = stmt.executeQuery();
       
//QUERO FAZER O TESTE AQUI EM BAIXO, SE RS.NEXT() RETORNA NADA
//DO BANCO QUERO TRATAR O HTML.APPEND PARA "SEM REGISTRO"!
 
        while (rs.next()){
            
             String ds_servico = rs.getString("ds_servico");
            
             html.append(ds_servico);
            
            }
                
        rs.close();

Valeu gang do Portal Java

2 Respostas

J
rs = stmt.executeQuery();

if(!rs.first()){
    //sem registros
}

rs.beforeFirst();

while(rs.next()){
   //...
}
C

Olá tbarros,

Como não existe um método pra saber quantas linhas retornaram em um ResultSet, eu tenho duas alternativas para o seu problema.

A primeira é você fazer a mesma consulta no seu banco, só que pedindo a quantidade de registros (“select COUNT(*) from dbamv.servico s, dbamv.escala_cirurgia e where e.cd_servico = s.cd_servico and dt_escala = ? and cd_sal_cir = ? and tp_turno = ?”). Aí você vê quantos registros deu. Se tiver dado pelo menos um, você faz a consulta novamente, só que pedindo os campos que você quer. Se não, você já sabe que não tem nada e pode colocar “SEM REGISTRO”.

A segunda idéia (que é mais viável) é você usar uma variávelzinha booleana pra indicar se você entrou ou não dentro do while (rs.next()). Se tiver entrado, pelo menos uma vez, é porque você encontrou pelo menos um registro. Se não, aí você coloca “SEM REGISTRO” onde você falou. Por exemplo:

boolean entrou = false; while (rs.next()) { String ds_servico = rs.getString("ds_servico"); html.append(ds_servico); entrou = true; } rs.close(); if (!entrou) { html.append("SEM REGISTRO"); }

Até mais,

Criado 8 de maio de 2006
Ultima resposta 8 de mai. de 2006
Respostas 2
Participantes 3