Java 错误 Operation Not Allowed After ResultSet Closed

本篇文章介绍了 Java 中的 java.sql.SQLException: Operation not allowed after ResultSet closed 错误。


Java 错误 java.sql.SQLException: Operation not allowed after ResultSet closed

当我们尝试访问关闭的结果集时,错误“结果集关闭后不允许操作”是一个 SQL 异常。 正如Java Doc提到的,每当一个statement对象被关闭时,如果它的Resultset对象存在,它也将被关闭。

错误的问题在于 Resultset 实例还将保存底层语句。 因此,当底层语句关闭时,结果集也将关闭,从而引发错误。

这是会引发相同错误的代码片段。

代码:

ResultSet Result_Set; // class variable

Statement Demo_Statement = null;
try{
    Demo_Statement = DB_Connection.createStatement();
    Result_Set = Demo_Statement.getGeneratedKeys();
   }
catch (Exception e){
    throw e;
   }
finally{
try{
    if (Demo_Statement != null)
        Demo_Statement.close();
    } catch (SQLException e){
    throw e;
   }
}

System.out.println(Result_Set.next());

上面带有数据库连接的代码将引发以下错误。

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

修复 Java 错误 java.sql.SQLException: Operation not allowed after ResultSet closed

代码中的问题是,在处理完 Resultset 之前,我们无法关闭语句实例。 一旦我们完成了结果集,我们就可以关闭结果集和语句实例。

正如我们所看到的,我们试图从 Result_Set.next() 打印布尔值,但我们在关闭语句实例后使用结果集,这也关闭了结果集。

在上面的代码中,修复方法是不在该位置关闭语句,或者在关闭语句实例后不使用结果集。 根据您的应用程序,我们可以删除 Demo_Statement.close()System.out.println(Result_Set.next()); 陈述。

代码:

ResultSet Result_Set; // class variable

Statement Demo_Statement = null;
try{
    Demo_Statement = DB_Connection.createStatement();
    Result_Set = Demo_Statement.getGeneratedKeys();
   }
catch (Exception e){
    throw e;
   }
finally{
try{
    if (Demo_Statement != null)
        Demo_Statement.close();
   } catch (SQLException e){
    throw e;
   }
}

我们刚刚删除了在语句实例关闭后尝试使用结果集的部分。 一旦对结果集完成所有操作,我们就可以关闭语句实例和结果集。

你可能感兴趣的:(Java,java,开发语言)