如何传递ArrayList<>作为MySQL中SQL查询的IN子句

时间:2016-01-31 07:40:32

标签: java mysql jdbc arraylist

我在java程序中使用mySQL JDBC驱动程序。我想在SQL查询的IN子句中传递一个ArrayList。

我确实使用了这样的预备语句,但这会抛出一个

  

" java.sql.SQLFeatureNotSupportedException"例外

因为mysql不支持这个。

ArrayList<String> list = new ArrayList<String>();
PreparedStatement pstmt = 
            conn.prepareStatement("select * from employee where id in (?)");
Array array = conn.createArrayOf("VARCHAR", list.toArray());
pstmt.setArray(1, array);
ResultSet rs = pstmt.executeQuery();

还有其他办法吗?也许使用Statement stmt。

1 个答案:

答案 0 :(得分:3)

使用正确数量的标记构建SQL语句,并设置所有值。

注意:数据库对允许的参数数量有限制,但对MySQL(65535)来说非常高。

library(ggplot2)
set.seed(123)
df <- data.frame(names = letters[1:10],
                 d1 = runif(10, 0, 2),
                 d2 = runif(10, 0, 2))

## using a manual scale
ggplot(data=df, aes(x=names, y=d1, fill=(d1 >= 1))) +
  geom_bar(stat="identity") + 
  scale_fill_manual(values = c(NA, "steelblue"))