我有像
这样的String数组String[] val=request.getParameterValues("Names");
for(int i=0;i<val.length;i++){
//printval[i];
}
我想将String数组的值分配给sql语句
如何将所有字符串值传递给sql条件?如果数组具有以下值
JAMES,SMITH, JAKE
等,然后我将其作为
sql = "where dept_name in('JAMES','SMITH','JAKE')";
理想情况下,我希望字符串数组值在sql的条件内传递。
答案 0 :(得分:3)
这很简单!
试试:
import org.apache.commons.lang3.StringUtils;
StringUtils.join(new String[] {"Hello", "World", "!"}, ", ");
您将使用逗号
加入字符串答案 1 :(得分:2)
您可以将查询构建为过滤器,并将此查询附加到主查询。
StringBuilder sb= new StringBuilder();
String filter = "";
String[] val=request.getParameterValues("Names");
for(int i=0;i<val.length;i++){
//printval[i];
sb.append( "'"+val[i]+"'," );
}
filter = sb.ToString();
filter = filter.substring(0, filter.length()-1);
sql = "where dept_name in("+filter+")";
答案 2 :(得分:1)
这应该可以解决问题:
StringBuilder csvStr = new StringBuilder();
for(int i=0;i<val.length;i++){
if (val.length > 1 && i !=0) {
csvStr.append(",");
}
csvStr.append ("'").append(val[i]).append("'");
}
System.out.println(csvStr);
将csvStr.toString()用于您正在使用的sql。
sql = "where dept_name in (".concat(csvStr.toString()).concat(")");
答案 3 :(得分:1)
sql = "where dept_name in(select column_value from table(?))";
然后将Array传递给JDBC。
Object[] dept = {"Dev","QA", "Support"};
Array deptArray = connection.createArrayOf("VARCHAR", dept);
preparedStatement.setArray(idx, deptArray);