jdbc查询中如何使用“in”操作符

victorming 2007-09-04 06:50:56
为何以下的更新操作没有效果:
PreparedStatement ps = conn.prepareStatement("updte table1 t set t.column1 = ? where t.pk in (?)");

ps.setString(1, "xxx");
ps.setString(2,"'1','3','4','6'");

int result = ps.executeUpdate();
发现result=0,数据库中没有更新,难道JDBC对in操作符的支持需要特殊处理?
...全文
737 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
宋玮-深圳 2007-09-06
  • 打赏
  • 举报
回复
尽量不要写in
liuzi123 2007-09-06
  • 打赏
  • 举报
回复
ps.setString(2,"1,3,4,6");
liuzi123 2007-09-06
  • 打赏
  • 举报
回复
先接分,后思考
somexinmin 2007-09-06
  • 打赏
  • 举报
回复
学习
alex_homer 2007-09-06
  • 打赏
  • 举报
回复
最好不要用in会影响性能!
victorming 2007-09-06
  • 打赏
  • 举报
回复
ps.setString(2, "1,2,3,4")这种方式也不行,没有办法,最后只能直接组装sql,利用Statement接口才解决了这个问题。
lario 2007-09-04
  • 打赏
  • 举报
回复
学习
awusoft 2007-09-04
  • 打赏
  • 举报
回复
如果你用SetString,它会自动的帮你加'',所以你最后的结果会是
ps.setString(2,"'1','3','4','6'");

updte table1 t set t.column1 = 'xxx' where t.pk in (''1','3','4','6'')
feihua317 2007-09-04
  • 打赏
  • 举报
回复
我试了一下,必须这样写!
where t.pk in (?,?,?,?)
然后分别为这些东西设置ps.setString(.., ..);
feihua317 2007-09-04
  • 打赏
  • 举报
回复
不太懂,不过有三个方法可以试试。
1)你直接把参数写SQL语句里,像这样,... where t.pk in ('1','3','4','6')");
2)如果成功的话,再这样试试,把ps.setString(2,"'1','3','4','6'");改成ps.setString(2,"1,3,4,6");
3)把where t.pk in (?)改成where t.pk in ?,然后ps.setString(2, ...);

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧