Como foram de feriado? Pra começar o dia estou com uma dúvida aqui. Estou trabalhando com um banco de dados nada normalizado. Não estou usando nenhum framework para buscar os dados, estou usando apenas uma classe DAO. O problema é tenho informações no meu banco que podem ter valores NULOS e estão vindo "0". Coloquei um comentário na minha DAO:
public List<Chuva> recuperaChuvaOrdenadaData() throws SQLException {
PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM Chuvas ORDER BY Data");
ResultSet rs = stmt.executeQuery();
List<Chuva> list = new ArrayList<Chuva>();
while (rs.next()){
Chuva chuva = new Chuva();
chuva.setDataChuva(rs.getDate("Data"));
chuva.setChuva01(rs.getDouble("Chuva01")); // é nessa linha que acontece a problema. Os valores que precisava que viesse NULL está vindo "0"
list.add(chuva);
}
rs.close();
stmt.close();
return list;
}
Esse método é implementado pelo driver do SQL, não pela própria Oracle, e não é muito bem especificado.
O resultado líquido é que cada driver SQL implementa isso de um jeito diferente, e acabamos tendo resultados que dependem tanto do banco usado quanto do driver usado, o que dá uma dor de cabeça dos infernos.
L
lele_vader
A idéia do usuário entanglement e bem interessante.
Talvez colocar com um método genérico ou uns overrides, pois esse mesmo comportamento ocorre com int, long, float. além de double.
R
rafaelrodrigues1607
entanglement:
Se você sabe que um campo é nullable, você tem de testar antes com “wasNull”. Troque
Bom… estou com um problema meio inverso…
No meu caso me deparei com um getDouble que retorna null mesmo… não faz a conversão para ZERO conforme documentação.
Um dos motivos é que o driver não reconheceu o SQL NULL por algum motivo…
Estou vendo se há alguma configuração para isso ou se o driver usado é muito antigo… mas alguém, já se deparou com isso?