java – 带有IN子句中参数列表的PreparedStatement

参见英文答案 > PreparedStatement IN clause alternatives?                                    28个
如何在执行查询时在JDBC中的preparedStatement中设置in子句的值.

例:

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

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

解决方法:

我做的是添加一个“?”为每个可能的价值.

例如:

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 
}

相关文章

连接数据库的方式:第一种方式:ODBC:开放数据库连接是微软...
JDBCRequest 使用VariableNamesmysql:数据库连接池对象var...
 1.JDBCDBC(JavaDataBaseConnectivity):Java数据库连接技术...
1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java....
1.简介Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务...
1.JDBC体系系统一组规范:接口JDBC接口(API)包括两个层次:...