Olá Galera,
Estou com um problema na hora de fazer uma verificação nos dados da minha tabela. Eu preciso analisar todos as cédulas da minha tabela e só deixar o sistema funcionar se todas estiverem com algum valor igual ou maior que 0. O problema é que quando o usuário deixa a cédula em branco, ele entende como zero e não cai no else. Alguém sabe como tratar isso?
opaa…
isso acontece porque você da um rs.getInt() e o valor default de int é 0.
jgbarros
Usa rs.getString(“num_estrada”)
Mas cuidado, pois String com null ou “” não é a mesma coisa.
O ideal é colocar uma restrição de not null no banco e tratar na sua classe de negócio.
Olá Augusto. O método getInt() retorna 0 quando o valor do campo é null. Para saber se o campo que você acabou de ler era nulo, chame o método wasNull() depois de recuperar seu inteiro com o metodo getInt(). Exemplo abaixo:
int numEstrada = rs.getInt("num_estrada");
if (rs.wasNull() || numEstrada < 0 {
System.out.println("VALOR INVALIDO NA TABELA");
} else {
System.out.println("OK");
}
augustocolom
Hum,
No caso eu preferiria não mexer no banco, a coluna “num_estrada” teria que ser do tipo integer. Fiz o teste usando getString, mas não deu certo, ele cai no else com valores = a “0”,
olha como ficou:
Ele não deve cair no else com valores = a 0, mas sim com valores nulos.
Sabe se existe outra forma de tratar isso sem mexer na estrutura do banco?
Abraços
marcosharbs
pq vc num usa um Integer ao invez de int o Integer aceita null diferente de tipo primitivos, se vc não atribuir um valor a um objeto do tipo Integer quando vc for buscar o valor daquele objeto ele vai te retornar null
Felagund
O Problema esta na API do JDBC, onde um ResultSet retorna somente um int, ele fica preso ao tipo primitivo nesse caso.
exprimente o rs.wasNull() que citaram acima, nunca usei ele, mas me pareceu interessante.
[]'s
rdgms
Oque acha de tentar:
thingol:
if (rs.getInt ("entrada") == 0 && rs.wasNull()) {
... entrada era "null", não zero
}
augustocolom
thingol:
if (rs.getInt ("entrada") == 0 && rs.wasNull()) {
... entrada era "null", não zero
}
Valeu Thingol,
Problema Resolvido
Ficou assim…
if(rs.getInt("num_estrada") > 0 || !rs.wasNull())
{
System.out.println("BELEZA");
}
else
{//Else Numero de Propriedades
return 0;
}