2

我有类似的字符串数组

String[] val=request.getParameterValues("Names");  
for(int i=0;i<val.length;i++){  
 //printval[i];
}

我想将字符串数组的值分配给 sql 语句

如何将所有字符串值传递给 sql 条件?如果数组具有以下值 JAMES,SMITH, JAKE等,那么我会将其传递为

sql =  "where dept_name in('JAMES','SMITH','JAKE')"; 

理想情况下,我希望字符串数组值在 sql 的条件内传递。

4

4 回答 4

3

这很简单!

试试看嘛:

import org.apache.commons.lang3.StringUtils;


StringUtils.join(new String[] {"Hello", "World", "!"}, ", ");

您将使用逗号连接字符串

于 2013-05-09T12:07:09.990 回答
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+")"; 
于 2013-05-09T12:08:04.383 回答
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);

在您正在使用的 sql 中使用 csvStr.toString()。

  sql =  "where dept_name in (".concat(csvStr.toString()).concat(")"); 
于 2013-05-09T12:16:48.247 回答
1
sql = "where dept_name in(select column_value from table(?))"; 

然后将数组传递给 JDBC。

Object[] dept = {"Dev","QA", "Support"};
Array deptArray = connection.createArrayOf("VARCHAR", dept);
preparedStatement.setArray(idx, deptArray);
于 2017-02-07T11:56:43.480 回答