我在我的數據庫中有一列是鍵入double
,我想使用JDBC ResultSet從中讀取值,但它可能爲空。這樣做的最好方法是什麼?我可以想到三個選項,其中沒有一個看起來很好。我如何在JDBC中讀取resultSet中可能爲空的double值?
選項1:糟糕,因爲異常處理冗長又臭
double d;
try {
d = rs.getDouble(1);
// do something
} catch(SQLException ex) {
if(rs.wasNull()) {
// do something else
} else {
throw ex;
}
}
選項2:不好,因爲兩次存取
s = rs.getString(1); // or getObject()
if(s == null) {
// do something else
} else {
double d = rs.getDouble(1);
// do something
}
方案3:不好,因爲Java的,而不是SQL轉換
s = rs.getString(1); // or getObject()
if(s == null) {
// do something else
} else {
double d = Double.parseDouble(s);
// do something
}
任何建議哪個方向更好,還是有另一種更好的方法?並且請不要說「使用Hibernate」,我只限於JDBC代碼。
OMG。謝謝 – 2010-08-22 20:07:55
注意,從結果集中檢索空基元時沒有sqlexception。在這種情況下返回該原語的默認值(0代表int,0.0代表double等)。因此,爲什麼.wasNull()是必要的罪惡。 – Matt 2012-08-31 12:42:08