在使用PreparedStatement的时候突然发现给占位符“?”赋值之后查询出来的结果却为空,最后排查其原因是因为sql语句中使用in的问题如:
String ids=“‘001’,’002’,’003’,’004’”;
String sql=”select t.name from students t. where t.id in ( ? )”;
PreparedStatement ps=conn.getPreparedStatement(sql);
ps.setString(1,ids);
ResultSet rs=ps.excuteQuery();
最后发现查询出的结果为空的,估计是因为“?”被赋值之后在“in()”中的并不是形成了多列参数,而是把ids传入的值当做一个整体,所以查不出来想要的结果。
在使用到 in 操作符时,在有多列参数的时候建议使用Statement对象。