Cuando se trabaja con un conjunto de resultados JDBC quiero llegar doble en vez de doble ya que esta columna es anulable. Rs.getDouble devuelve 0.0 cuando la columna es nula.¿Cómo obtengo un doble de un conjunto de resultados en lugar de un doble?
Respuesta
Puede consultar wasNull
en su ResultSet para averiguar si el valor era null
.
Tenga en cuenta que primero debe llamar a uno de los métodos getter en una columna para intentar leer su valor y luego llamar al método wasNull para ver si el valor leído era SQL NULL.
Si realmente necesita un Double
después, puede crearlo desde el double
devuelto.
Uso ResultSet.wasNull ->http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html#wasNull%28%29
Básicamente funciona para todos los tipos primitivos, utilice por primera vez getDouble
, getInt
, etc., y sólo si el resultado es 0 se utiliza wasNull
.
Una alternativa a la mencionada ResultSet#wasNull()
es probar ResultSet#getObject()
en null
por lo que muy bien puede ponerlo en una sola línea en combinación con el operador ternario:
Double d = resultSet.getObject("column") != null ? resultSet.getDouble("column") : null;
en lugar de
Double d = resultSet.getDouble("column");
if (resultSet.wasNull()) {
d = null;
}
punto interesante, aunque hay una penalización en el rendimiento aquí para llamar a un captador dos veces en el caso común cuando el valor no es nulo. Tal vez es posible simplemente lanzar el resultado de getObject a un doble? – Yoni
@Yoni: Ciertamente no hay una penalización de rendimiento al invocar un getter simple. Los datos ya están * allí * desde que se ha llamado a 'next()'. – BalusC
sino que también tenga en cuenta lo que la documentación del conjunto de resultados dice: 'Para una máxima portabilidad, como resultado columnas del conjunto dentro de cada fila debe leerse de izquierda a derecha orden, y cada columna debe leerse solamente once.': - @ –
Se podía hacer:
doble d = (doble) ResultSet.getObject ("columna");
entonces usted no tiene que preocuparse si era nula.
Tenga cuidado, usted puede terminar con tener un error como "ClassCastException 'java.math.BigDecimal no se puede convertir a java.lang.Double'" – prageeth
- 1. Inicialización de un objeto doble con un valor doble primitivo
- 2. multiplicar un complejo doble con un doble en Haskell
- 3. libre de un doble puntero
- 4. ¿Cómo comprobar si un doble es nulo?
- 5. ¿Por qué obtengo InvalidCastException al convertir un doble en decimal?
- 6. cacao - conversión de un doble a cadena
- 7. En DIH Solr importar dos doble en un solo lugar
- 8. Cómo obtener un doble de una cadena
- 9. Regexp para un doble
- 10. Formateando un doble en JSF
- 11. ¿Cómo seleccionar un conjunto de resultados vacío?
- 12. Convierte un doble en un QString
- 13. La conversión de un decimal a un número doble en C# resultados en una diferencia
- 14. Doble un div con CSS
- 15. ¿Cómo convertir un doble a NSInteger?
- 16. ¿Cómo puedo usar parseInt para un doble?
- 17. ¿Qué es un "error de doble pila"?
- 18. límite de un doble con dos decimales
- 19. ¿Cómo convertir de forma segura este doble en un int?
- 20. Realización de un doble clic desde CGEventCreateMouseEvent()
- 21. Redondear un doble a int
- 22. Comparando un doble contra cero
- 23. Generar un doble al azar en un intervalo de
- 24. Representación textual exacta de un "doble" IEEE
- 25. Complejidad de un doble para el bucle
- 26. Devolver un doble puntero de solo lectura
- 27. Objective-C, ¿cómo convierto un doble en un int?
- 28. ¿Cómo convierto un CString a un doble en C++?
- 29. Cómo imprimir un doble con una coma
- 30. ¿Cómo convertir bytes a un doble?
1 apenas más que decir – stacker