我有一个球衣java服务器和一个mysql服务器:
我向服务器发送POST
ArrayList<Long>
。然后我想做一个像...where long OR long OR long....
有没有一种优雅的方法可以解决这个问题,而不是总是在for循环中做一个选择?
如何使用where子句的动态计数形成sql语句?
非常感谢你。
答案 0 :(得分:1)
而不是OR
多次,您可以在SQL查询中使用IN
where
子句。
您可以在循环中读取ArrayList
对象并设置where子句值。
JAVA代码段:
int paramCount = list.size();
StringBuilder sqlSelect = new StringBuilder( 1024 );
sqlSelect.append( "select x,y,z from my_table " );
if( paramCount > 0 ) {
sqlSelect.append( "where long_column in ( " );
for( i = 0; i < paramCount; i++ ) {
sqlSelect.append( ( i > 0 ? ", ?" : "?" );
} // for each param
sqlSelect.append( " )" );
} // if list is not empty
// make the prepare statement (pst) with the above sql string
// ...
// now set the parameter values in the query
int paramIndex = 1;
if( paramCount > 0 ) {
for( i = 0; i < paramCount; i++ ) {
pst.setLong( paramIndex++, ( (Long)list.get( i ) ).longValue() );
} // for each param
} // if list is not empty