将NULL插入setDouble方法Java中

时间:2017-01-18 13:36:38

标签: java oracle

我的代码试图在PreparedStatement

中的setDouble方法中插入NULL
ps.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方法。

有没有办法聪明地进行操作,还是有其他办法。请告诉我。

2 个答案:

答案 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);

setObject(int parameterIndex, Object x, int targetSqlType)