Foros del Web » Programación para mayores de 30 ;) » Java »

Decimal nulo en SQL Server devuelve 0.0 en vez de NULL

Estas en el tema de Decimal nulo en SQL Server devuelve 0.0 en vez de NULL en el foro de Java en Foros del Web. Buenas a todos, tengo un problema. Tengo un proyecto web usando SQL Server y Icefaces y resulta que en mi base de datos tengo un ...
  #1 (permalink)  
Antiguo 09/12/2014, 17:02
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 16 años, 4 meses
Puntos: 0
Pregunta Decimal nulo en SQL Server devuelve 0.0 en vez de NULL

Buenas a todos, tengo un problema. Tengo un proyecto web usando SQL Server y Icefaces y resulta que en mi base de datos tengo un campo nulo, el cual quiero mostrar en un inputText, por lo que necesito que sea siempre vacío si es que en la DB está como nulo.

Algunos datos:
  • Mi SP lo devuelve como vacío, pero Java lo recibe como "0.0" en vez de nulo.
  • El campo de la entidad es Double (no double).
  • cuando hago esto, en consola veo el hermoso 0.0
    Código:
     System.out.println(rs.getDouble(2));
    

Cómo puedo hacer para obetener nulo? Ya que habrán casos en los que el usuario ingresará 0.0 y otros en que no ingresará nada y guardaré en DB el valor nulo.

Muchas gracias desde ya :)
  #2 (permalink)  
Antiguo 09/12/2014, 17:16
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 12 años, 11 meses
Puntos: 34
Respuesta: Decimal nulo en SQL Server devuelve 0.0 en vez de NULL

Creo que seria mas consistente si la base de datos almacenara por defecto 0 en vez de null en ese campo, y en tu codigo validaras que si el valor del campo es 0 no muestre nada en el campo inputtext o muestre el 0.
  #3 (permalink)  
Antiguo 10/12/2014, 12:13
 
Fecha de Ingreso: julio-2008
Mensajes: 9
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Decimal nulo en SQL Server devuelve 0.0 en vez de NULL

El tema es que el usuario puede colocar 0 o dejar el campo en nulo, de ahí que necesite hacer la diferencia entre ambos valores :(
  #4 (permalink)  
Antiguo 10/12/2014, 13:47
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Decimal nulo en SQL Server devuelve 0.0 en vez de NULL

Buenas,

El problema es que el getDouble() del resultset hace un casteo siempre al tipo primitivo double, que no puede ser nulo y por defecto vale 0.0.

Lo que tienes que hacer es recuperar del resultset un objeto, y solo convertirlo si no es nulo.
Código Java:
Ver original
  1. if (rs.getObject(2) != null) {
  2.     //Lo convierto a double o directamente a string y lo meto en la caja de texto
  3. }

De hecho, si al final vas a meter todos tus datos en cajas de texto, casi es mejor que los recuperes todos con getString.

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: decimal, devuelve, null, nulo, server, sql, valor, vez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:49.