带有IN子句中参数列表的PreparedStatement [英] PreparedStatement with list of parameters in a IN clause

查看:156
本文介绍了带有IN子句中参数列表的PreparedStatement的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在执行查询时在JDBC中的preparedStatement中设置in子句的值。

How to set value for in clause in a preparedStatement in JDBC while executing a query.

示例:

connection.prepareStatement("Select * from test where field in (?)");

如果这个in子句可以包含多个值,我该怎么办呢。有时我事先知道参数列表,有时我事先不知道。如何处理这种情况?

If this in-clause can hold multiple values how can I do it. Sometimes I know the list of parameters beforehand or sometimes I don't know beforehand. How to handle this case?

推荐答案

我做的是添加一个?为每个可能的价值。

What I do is to add a "?" for each possible value.

例如:

List possibleValues = ... 
StringBuilder builder = new StringBuilder();

for( int i = 0 ; i < possibleValue.size(); i++ ) {
    builder.append("?,");
}

String stmt = "select * from test where field in (" 
               + builder.deleteCharAt( builder.length() -1 ).toString() + ")";
PreparedStatement pstmt = ... 

然后愉快地设置参数

int index = 1;
for( Object o : possibleValue ) {
   pstmt.setObject(  index++, o ); // or whatever it applies 
}

这篇关于带有IN子句中参数列表的PreparedStatement的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆