Ich habe eine Spalte in meiner Datenbank, die double
eingegeben wird, und ich möchte den Wert von es mit einem JDBC ResultSet lesen, aber es kann null sein. Was ist der beste Weg, dies zu tun? Ich kann mir drei Möglichkeiten vorstellen, von denen keine sehr gut zu sein scheint.Wie lese ich in JDBC einen möglichen Nulldoppelwert von resultSet?
Option 1: Bad, weil Ausnahme ausführlich und stinkende
double d;
try {
d = rs.getDouble(1);
// do something
} catch(SQLException ex) {
if(rs.wasNull()) {
// do something else
} else {
throw ex;
}
}
Option 2 Handhabung: Bad, weil zwei Abholungen
s = rs.getString(1); // or getObject()
if(s == null) {
// do something else
} else {
double d = rs.getDouble(1);
// do something
}
Option 3: Bad, weil Java anstatt SQL Umwandlung
s = rs.getString(1); // or getObject()
if(s == null) {
// do something else
} else {
double d = Double.parseDouble(s);
// do something
}
Irgendwelche Vorschläge, auf welchem Weg ist besser, oder gibt es einen anderen überlegenen Weg? Und bitte sagen Sie nicht "Use Hibernate", ich bin nur hier auf JDBC-Code beschränkt.
omg. danke, obwohl –
beachten Sie, dass es keine sqlexception beim Abrufen von Null-Primitiven aus einer Ergebnismenge gibt. In solchen Fällen wird der Standardwert für dieses Primitiv zurückgegeben (0 für int, 0.0 für double usw.). Daher ist .wasNull() ein notwendiges Übel. – Matt
Ich hatte genau die gleiche Reaktion wie @JosefPfleger, als ich erkannte, wie Vanille JDBC in Bezug auf Nullen funktioniert. Wenn Sie jedoch weiterhin normales SQL verwenden (im Gegensatz zur Übernahme eines ORM) und dieses Debakel ganz vermeiden möchten, empfehle ich Spring ''JdbcTemplate'', das sich um all diese lästigen Null-Checks kümmert. –