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()操作)就能运行通过。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM