*************PreparedStatement中如何在sql中使用in

lily2000 2006-04-20 08:59:40
请看我的程序:
String sql = "select * from test where id in ( ? ) ";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, idS);
ResultSet rs = stmt.executeQuery(); //这行总是报错
while (rs.next()) {
......
}
我用的是oracle9i数据库,如果不使用预编译的方式,执行就没有问题。
难道预编译不能使用in吗?
...全文
300 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lily2000 2006-04-20
问题已经解决了,谢谢各位拉
  • 打赏
  • 举报
回复
heronce 2006-04-20
import java.sql.*;

class Preparedstmt {

Preparedstmt() {
try {
...
Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433;DatabaseName=??","sa", "");

String strsql = "select username from T_Person where id > ?";
PreparedStatement pstmt = conn.prepareStatement(strsql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setInt(1,1);//第一个参数的值是1,即id>1

ResultSet rs = pstmt.executeQuery();


while(rs.next()){
String fname = rs.getString("username");
System.out.println("姓名是: " + fname);
}
rs.first();
rs.close();
pstmt.close();
conn.close();

} catch (SQLException e) {
e.printStackTrace();
}
}


public static void main(String[] args) {
new Preparedstmt();
}
}
希望对你有用
  • 打赏
  • 举报
回复
lily2000 2006-04-20
我换了种方式
String sql="select * from book where name in(?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);
String name1 = "A";
String name2= "B";
String name3 = "C";
pssetString(1, name1);
pssetString(2, name2);
pssetString(3, name3);
ResultSet rs = ps.executeQuery();
while(rs.next())
{
System.out.println("get one");
}
这样好像可以解决
  • 打赏
  • 举报
回复
treeroot 2006-04-20
不能!
  • 打赏
  • 举报
回复
crazycy 2006-04-20
学习一下 呵呵
  • 打赏
  • 举报
回复
Ryo_Hazuki 2006-04-20
我选择了逃避
String sql = "select * from test where id in ( {0} ) ";
sql = MessageFormat.format(sql, idS);
PreparedStatement stmt = conn.prepareStatement(sql);
//stmt.setString(1, idS);
ResultSet rs = stmt.executeQuery();
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2006-04-20 08:59
社区公告
暂无公告