zoukankan      html  css  js  c++  java
  • Operation not allowed after ResultSet closed--操作mysql数据库

    一个stmt多个rs进行操作.那么从stmt得到的rs1,必须马上操作此rs1后,才能去得到另外的rs2,再对rs2操作.不能互相交替使用,会引起rs已经关闭错误——Operation not allowed after ResultSet closed.

    错误的代码如下:
     stmt=conn.createStatement();
    
     rs=stmt.executeQuery("select * from t1");
     rst=stmt.executeQuery("select * from t2");
    
     rs.last();
        //由于执行了rst=stmt.executeQuery(sql_a);rs就会被关闭掉!所以程序执行到此会提示ResultSet已经关闭.错误信息为:java.sql.SQLException: Operation not allowed after ResultSet closed
    
    rst.last();
    

    正确的代码:

     stmt=conn.createStatement();
     
     rs=stmt.executeQuery("select * from t1");
     rs.last();//对rs的操作应马上操作,操作完后再从数据库得到rst,再对rst操作
    
     rst=stmt.executeQuery("select * from t2");
     rst.last();

    一个stmt最好对应一个rs, 如果用一个时间内用一个stmt打开两个rs同时操作,会出现这种情况.编写这样的代码的操作原则是:
    所以解决此类问题:

      1.就多创建几个stmt,一个stmt对应一个rs;

      2.若用一个stmt对应多个rs的话,那只能得到一个rs后就操作,处理完第一个rs后再处理其他的,如上"正确代码".

     

    多个stmt对应各自的rs.
    stmt=conn.createStatement();
    stmt2=conn.createStatement();
    
    rs=stmt.executeQuery("select * from t1");
    rst=stmt2.executeQuery("select * from t2");
    
    rs.last();
    rst.last();
    

      

  • 相关阅读:
    Sublime2 Text编辑器使用技巧
    PHP实现一个简单url路由功能
    jQuery extend函数详解
    Memcached常用命令及使用说明
    根据一张表去更新另一张表
    npm ERR! Error: socket hang up
    Oracle中group by 1,order by 1的理解
    Oracle中的next_day(date,char)函数的理解
    WebService入门
    OCupload、POI、PinYin4j的简单入门
  • 原文地址:https://www.cnblogs.com/haore147/p/3617767.html
Copyright © 2011-2022 走看看