使用SQLServer或其它数据库时,有时候查询条件过多的情况下会报如下类似的错误:
传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100
这是由于查询条件过多造成的,所以需要分割查询条件,下面附上通用的方法:
/**
*分割查询条件集合
*/
private static List<List<Integer>> splitList(List<Integer> lists,int limit){
int size=lists.size();
List<List<Integer>> list=new ArrayList<List<Integer>>();
if(limit>size){
list.add(lists);
return list;
}
int result=0;
for(int i=0;i<size;i=i+limit){
result=i+limit;
if(result>size){
result=size;
}
list.add(lists.subList(i, result));
}
return list;
}