我有一个整数数组列表。我想在SQL查询的IN子句中使用此列表。我试着在下面做,但我知道它不会工作。有人可以建议一个更好的方法。
List<Integer> **plcList** = new ArrayList<Integer>();
String finalQuery = "
select plc,direction,ROUND(AVG(CAST(speed as float)),2) as speed,COUNT(plc) as count,time_id
from processed
WHERE plc IN " + " " + "(**plcList**)"+ " " + "
group by plc, direction, time_id";
答案 0 :(得分:0)
我不是Java教授。但我建议你循环遍历你的列表,并用逗号分隔值制作字符串。就像在PHP中一样,我们使用implode函数。因此你的最终字符串将是这样的
1,2,3,4,5
然后在你的SQL查询中使用它
我不确定我的代码但是尝试这个,因为我不是Java程序员( 如果出现语法错误,请进行必要的更改)
String intlist = "";
for (String temp : list)
{
intlist += ","+temp;
}
String Str = new String(intlist);
String sqlstring = Str.substring(1);
答案 1 :(得分:0)
我建议看看这个:PreparedStatement IN clause alternatives?
此页面:http://www.javaranch.com/journal/200510/Journal200510.jsp#a2
在您的情况下,您可以循环构建整数列表,如上面提到的Abdul。
答案 2 :(得分:0)
试试这个..
List<Integer> myList = new ArrayList<Integer>();
StringBuilder builder = new StringBuilder();
// length of the list
int locSize = myList.size();
Object[] args = new Object[locSize];
for( int i = 0; i < locSize; i++ ) {
builder.append(" ?, " );
args[i]= myList.get(i);
}
然后,您可以在查询中使用此功能。
....WHERE plc IN ("+ builder.toString() +") group by plc, direction, time_id";
有关类似问题,请参阅passing object[] to sql query。