Diferenciar Zero de Null

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?

[code]
if(rs.getInt(“num_estrada”) > 0 ||

  rs.getInt("num_estrada") == 0)
									
  {

										
  System.out.println("OK");											  

}

  else

{

 System.out.println("VALOR INVALIDO NA TABELA");	
										
  return 0;  

								
  }[/code]

opaa…
isso acontece porque você da um rs.getInt() e o valor default de int é 0.

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.

Isso mesmo. Pega string e compara com equals :stuck_out_tongue:

if (rs.getInt ("entrada") == 0 && rs.wasNull()) {
    ... entrada era "null", não zero
}

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"); }

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:

if(rs.getInt("num_estrada") > 0 ||
	 rs.getString("num_estrada") == "0")
 {
	System.out.println("BELEZA");											  
 }
 else
{
	System.out.println("DADOS INVALIDOS");	
	 return 0;  
 } 

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

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

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

Oque acha de tentar:

[quote=thingol] if (rs.getInt ("entrada") == 0 && rs.wasNull()) { ... entrada era "null", não zero } [/quote]

[quote=thingol] if (rs.getInt (&quot;entrada&quot;) == 0 && rs.wasNull()) { ... entrada era &quot;null&quot;, não zero } [/quote]

Valeu Thingol,

Problema Resolvido
Ficou assim…

if(rs.getInt(&quot;num_estrada&quot;) &gt; 0 || !rs.wasNull())
													  
 {
	 System.out.println(&quot;BELEZA&quot;);											  
}
 else
{//Else Numero de Propriedades
	
	return 0;  
 }