日期:2014-05-20  浏览次数:20943 次

java中sql语句是where 条件 in(?,?,?)时的处理方法
各位达人:

小弟在这请教一个问题:在java拼的sql语句中有"where 条件 in (?,?,?)"这种情况该怎么处理啊?这个类传入一个参数名,但参数的值有可能是多个,例如:参数名是 String key_no,但在jsp页面查询时有可能输入1个,也有可能是多个,不知道在java中该怎么处理了,还望诸位达人不吝赐教,非常感谢!

------解决方案--------------------
比如输入的是 1,2,3 这样的多个以逗号隔开的参数
那么我们在代码里就这么写了



String key_no = request.getParameter("key_no")==null?"":request.getParameter("key_no");
String [] key_no_array = key_no.split(",");
String sql = " select * from 表明  where 1=1  ";
if(!key_no.equals("")){
sql+=" and  字段  in( ";
for(int i=0;i<key_no_array.length;i++){
sql+="'"+key_no_array[i]+"'";
if(key_no_array.length-1!=i){
sql+=",";
}
}
sql+=" ) ";
}


随便写的 前提是你多个参数是用逗号隔开
------解决方案--------------------
String[] parm={"234","3445","298"};
String sql=" coulum  in (";
for (int i = 0; i < parm.length; i++) {
if(i==parm.length-1){
sql+=parm[i];
break;
}
sql+=parm[i]+",";
}
System.out.println(sql+")");