JDBC中Preparedstatement的executeQuery()函数问题

今天遇到一个问题,不知道咋回事。  

1         PreparedStatement ps = null;
2         ResultSet rs = null;
3         ResultSet rs2 = null;

中间部分代码省略

1        // 建立数据库操作对象,预编译
2             String sql = "select balance from bank where name = ?";
3             ps = conn.prepareStatement(sql);
4             // 执行SQL语句
5             ps.setString(1, srcName);
6             rs = ps.executeQuery();
7             ps.setString(1, desName);
8             rs2 = ps.executeQuery();
9             if (rs.next() && rs2.next()) {

这样写(用一个Preparedstatement对象setString()两次执行查询两次,将结果分别返回到两个不同的ResultSet对象中)执行,在执行到第9行报错提示rs已关闭:

java.sql.SQLException: Operation not allowed after ResultSet closed

-----------------------------------------------------------------------------------------

1         PreparedStatement ps = null;
2         PreparedStatement ps2 = null;
3         ResultSet rs = null;
4         ResultSet rs2 = null;
//中间部分代码省略
 1        // 建立数据库操作对象,预编译
 2             String sql = "select balance from bank where name = ?";
 3             ps = conn.prepareStatement(sql);
 4             ps2 = conn.prepareStatement(sql);
 5             // 执行SQL语句
 6             ps.setString(1, srcName);
 7             rs = ps.executeQuery();
 8             ps2.setString(1, desName);
 9             rs2 = ps2.executeQuery();
10             if (rs.next() && rs2.next()) {

 

这样写(分别创建两个Preparedstatement对象,分别执行各返回一个ResultSet对象然后进行rs.next()操作)就能运行通过。

posted @ 2015-11-30 00:16  GoQC  阅读(6906)  评论(0)    收藏  举报