递归准备语句的条件.set方法

conditional .set method for preparedstatement recursively

我有一个列列表来检查空值并将它们插入数据库。 我知道这很简单 if/else。

    if (lvl1.equalsIgnoreCase("NULL")) {
        stmt.setNull(2, java.sql.Types.INTEGER);
    } else {
        stmt.setString(2, lvl1);
    }

但是对于至少 10 列来写这个,我希望有更简单的单行代码来为每一列做这个。

是否有任何递归方法可以使这个更简单? 是否有任何单行代码可以确定列值并分配 .set 方法 .setNull().setString() ? 也许像 lvl1.setCheckNull(String) 这样的东西意味着它检查 null 如果 null 然后 .setNull() 而不是 .setString().

你可以像

那样编写你自己的方法
public void setString(PreparedStatement ps, int parameterIndex, String str) throws SQLException
{
    if(str.equalsIgnoreCase("NULL"))
        ps.setNull(parameterIndex, java.sql.Types.INTEGER);
    else
        ps.setString(parameterIndex, str);
}

然后像

一样使用它
setString(preparedStatement, 2, stringToCheck);
setString(preparedStatement, 3, string2ToCheck);

等等,对于你的 10 列。