请问用PreparedStatement处理带in的SQL语句到底应该怎么写

fuyingch 2009-03-27 04:03:03
问在oracle数据库中
SQL = "select * from table where modeCode in (?)";
..

PreparedStatement stmt = conn.preparedStatement(SQL);
stmt.setString(1, "param1,param2,param3");
rs = stmt.executeQuery();

上述语句执行后没有记录被得到,系统也没有报错,不知是什么问题。.因为IN 语句可以动态变化有多个条件,难道是设置入一个数组? 用PreparedStatement处理in的SQL语句到底应该怎么写谢谢
...全文
384 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sosohard 2009-12-04
苦苦寻找,无果。。。。。
回复
Study_Work_2009 2009-03-28
有可能是条件不满足,仔细检查一下
回复
xiguagege 2009-03-28
8楼正解
----------
JAVA技术文档里面给出的示例,相信你能看懂了
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
回复
palm_civet 2009-03-28
想绑定in里面的变量只能用pl/sql,就是写存储过程
回复
javaee_ssh 2009-03-28
那样写当然会抛异常

SQL = "select * from table where modeCode in ("+"param1,param2,param3"+")";
..

PreparedStatement stmt = conn.preparedStatement(SQL);
rs = stmt.executeQuery();

我就是这样用的
回复
jsyz3838131 2009-03-28
参数不对
SQL = "select * from table where modeCode in (?,?,?)";
..

PreparedStatement stmt = conn.preparedStatement(SQL);
stmt.setString(1, parm1);
stmt.setString(2, parm2);
stmt.setString(3, parm3);
rs = stmt.executeQuery();
应该是这样的,in()里面是你的参数值,你用一个 ?那就等于 SQL = "select * from table where modeCode = ?";
回复
fuyingch 2009-03-27
像in查询语句,每次查询in里面的参数个数可能不相同的,不知道用in查询的方式使用PreparedStatement和Statement谁的效率更高
回复
zoutuo 2009-03-27
PreparedStatement是从1开始吗?PreparedStatement我没有用过,不清楚。但hibernate的起始位是从0开始的。
如有错,请原谅
回复
zoutuo 2009-03-27
实在不行可以手动将内容放入一个数组或者集合中,然后每取出一个元素就加上一个逗号,当然是英文下的逗号。再循环体内加上一个判断:如果该循环为最后一次,那么不加逗号。可以用一个标志位来判断。
我不清楚PreparedStatement到底该如何写,但我认为这样应该能够解决您的问题。
回复
abc130314 2009-03-27
你有 x 个参数,就拼凑含有 x 个 ?的SQL。
再 conn.preparedStatement(SQL);
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.6w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2009-03-27 04:03
社区公告
暂无公告