我的代码试图在PreparedStatement
中的setDouble方法中插入NULLps.setDouble(++i, balance.getAmount());
getAmount()是双字段。
我能够处理
if (balance.getAmount() == null ) {
ps.setNull(++i, java.sql.Types.NULL);
}else{
ps.setDouble(++i, balance.getAmount());
}
但我的代码看起来很难看,因为我的代码有很多setInt setLong setDouble方法。
有没有办法聪明地进行操作,还是有其他办法。请告诉我。
答案 0 :(得分:2)
我会将丑陋提取到辅助方法
class StatementHelper{
static void setDouble(int index, PreparedStatement preparedStatement, Double val) throws SQLException {
if (val == null )
preparedStatement.setNull(index, java.sql.Types.NULL);
else
preparedStatement.setDouble(index, val);
}
//Repeat for other data types
}
然后只需构建你的语句
StatementHelper.setDouble(++i, ps, balance);
StatementHelper.setInt(++i, ps, someInt);
StatementHelper.setString(++i, ps, someString);
StatementHelper.setFloat(++i, ps, someFloat);
这将使语句构建代码相对干净
答案 1 :(得分:1)
你可以尝试
preparedStatement.setObject(i, balance.getAmount(), java.sql.Types.DOUBLE);