当前位置: 首页 > 面试题库 >

SQLException:ResultSet关闭后不允许进行操作

芮祺
2023-03-14
问题内容

我正在尝试执行getPendingSalesOrderIDs()方法,该方法调用方法selectInAsending(…)。

但这显示了一个SQLException,它说java.sql.SQLException:在ResultSet关闭后不允许进行该操作

此处db.endSelect()将关闭所有连接。 我认为问题就在于此。

public ArrayList getPendingSalesOrderIDs() {

    ArrayList a = new ArrayList();
    try {
        //ResultSet r = znAlSalesOrder.select("sono", "");
        ResultSet r = salesOrder.selectInAsending("soNo", "productionStatus = 'pending' and formatID='Zn-Al'", "soNo");
        r.beforeFirst();
        while (r.next()) {
            a.add(r.getString(1));
        }
    } catch (SQLException ex) {

    }
    return a;
}


  public ResultSet selectInAsending(String fields,String selection, String     orderField)
        {
        db = new Database();
        db.select("SELECT "+fields+" FROM "+name+" WHERE "+selection + " ORDER BY "         +orderField+ " ASC");
        this.rs=db.rs;
        db.endSelect();
        return this.rs;
        }



  public void select(String query)
  {
        if(con!=null)
        {
            try {
                System.out.println(query);
                rs = stm.executeQuery(query);
            } catch (SQLException ex) {
                Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

问题答案:

如果db.endSelect()关闭ResultSet,为什么不删除它(在selectInAsending()方法中)?

您可以使用以下getPendingSalesOrderIDs()方法关闭ResultSet :

ResultSet r = null;

try {
    ResultSet r = salesOrder.selectInAsending("soNo", "productionStatus = 'pending' and formatID='Zn-Al'", "soNo");

} catch (SQLException e) {

} finally {
    if (r != null) {
        try {
            r.close();
        } catch (SQLException e) {

        }
    }
}


 类似资料:
  • 我正在将MySQL与Java结合使用,试图制作shoppingcartDB,并试图删除从订购到现在已经过了30天的元组。 但是编译器说: 我如何解决这个问题? 代码: 抛出异常的代码行是: stmt。executeUpdate(“从篮子中删除,其中orderdate=““Odate”;”);

  • 我收到这个错误,我不知道为什么: SQLException: ResultSet关闭后不允许操作。错误出现在同时(rs1.next()){ 和consultaPortada方法:

  • 问题内容: 获取java.sql.SQLException:ResultSet关闭后不允许进行操作当我执行以下代码时,出现异常。我认为这是因为我正在与他相同的连接对象编写新语句。我应该如何重写它,以便可以创建准备好的语句并开始使用rs2?即使连接到相同的数据库,我也必须创建一个新的连接对象吗? 问题答案: 问题在于你在中获取数据的方式。每次访问你都会获得新鲜的食物,但你不会关闭它。 这违反了Sta

  • 问题内容: 我被错误卡住了,这里的第42行是,请帮我解决这个问题,我在这里待了几个小时。 这是我的代码: 问题答案: 一个对象只能具有一个active对象,因此在执行时,第一个ResultSet()被关闭。 创建两个对象,一个用于,另一个用于。 引用以下内容的javadoc : 默认情况下,每个对象只能同时打开一个对象。因此,如果一个对象的读取与另一个对象的读取是交错的,则每个对象必须已由不同的对

  • 我尝试使用Flyway6.0.beta2BaseJavaMigration和Mysql 出于某种原因,我得到了一个错误 无法回滚事务java.sql.sqlnontransientConnectionException:连接关闭后不允许任何操作。 原因是什么

  • 问题内容: 我构建了一个应用程序,并在本地部署了……并且运行良好。我将其部署在远程服务器上,并开始获取主题行中提到的异常。这不是因为防火墙问题。 我更改了通过IP地址而不是本地主机进行连接的方式,现在我在本地部署的应用程序上获得了相同的超时。当我使应用程序运行超过一天时,出现此错误。 我自己提交事务或关闭会话之后,我不执行任何操作。我正在使用以下属性 引起原因:com.mysql.jdbc.exc