java in 绑定变量,java – 在PreparedStatement中绑定一个空值变量

我发誓这个以前工作,但不是这种情况.我正在尝试匹配col1,col2和col3,即使其中一个或多个为null.我知道在某些语言中,我不得不诉诸于((?为空,col1为空)OR col1 =?).这是需要的吗?

PreparedStatement selStmt = getConn().prepareStatement(

"SELECT * " +

"FROM tbl1 " +

"WHERE col1 = ? AND col2 = ? and col3 = ?");

try

{

int col = 1;

setInt(selStmt, col++, col1);

setInt(selStmt, col++, col2);

setInt(selStmt, col++, col3);

ResultSet rs = selStmt.executeQuery();

try

{

while (rs.next())

{

// process row

}

}

finally

{

rs.close();

}

}

finally

{

selStmt.close();

}

// Does the equivalient of stmt.setInt(col, i) but preserves nullness.

protected static void setInt(PreparedStatement stmt, int col, Integer i)

throws SQLException

{

if (i == null)

stmt.setNull(col, java.sql.Types.INTEGER);

else

stmt.setInt(col, i);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值