当前位置: 首页 > 知识库问答 >
问题:

SQLException:ResultSet关闭错误后不允许操作

微生高谊
2023-03-14

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

private void tablaPeliculasMouseClicked(java.awt.event.MouseEvent evt) {                                            
    int codigo=Integer.parseInt(tablaPeliculas.getValueAt(tablaPeliculas.getSelectedRow(),0).toString());
    System.out.println("codigo: "+codigo);
    String nombre="";

    ResultSet rs1=DBVideoteca.consultaPortada(codigo);
    try {
        while(rs1.next()){
            nombre=rs1.getObject("imagen").toString();
        }
    } catch (SQLException ex) {
        Logger.getLogger(Videoteca.class.getName()).log(Level.SEVERE, null, ex);
    }

和consultaPortada方法

static ResultSet consultaPortada(int cod){
 conn=enlace(conn);
    try{
        stt=conn.prepareStatement("select * from peliculas where codigo=?");
        stt.setInt(1, cod);
    }
    catch (SQLException ex)
   {
    System.out.println("excepcion del try 1º del metodo consulta portada");
   }
   try 
   {
    stt.executeQuery();
   }
   catch (SQLException ex)
   {
    System.out.println("error en la query " + ex);
   }

   //cerrarConexion();
   return rs;
}

共有3个答案

隗和裕
2023-03-14

试试这个。。

    try{
       rs = stt.executeQuery();
   }
   catch (SQLException ex) {
    System.out.println("error en la query " + ex);
   }
邹高峻
2023-03-14

我对你的代码有很多担忧首先,你问题的答案是你没有给rs赋值所以,改变

stt.executeQuery();

收件人:

rs = stt.executeQuery();

其次,你的函数写得很糟糕

static ResultSet consultaPortada(int cod){
 conn=enlace(conn);
    try{
        stt=conn.prepareStatement("select * from peliculas where codigo=?");
        stt.setInt(1, cod);
    }
    catch (SQLException ex)
   {
    System.out.println("excepcion del try 1º del metodo consulta portada");//caught an exception here
   }
   try 
   {
    stt.executeQuery(); // this should not be executed if there is an exception in above try block
   }
   catch (SQLException ex)
   {
    System.out.println("error en la query " + ex);
   }

   //cerrarConexion();
   return rs;
}

stt。executeQuery() 语句也应该在前面的块中,类似这样

 try{
stt=conn.prepareStatement("select * from peliculas where codigo=?");
stt.setInt(1, cod);
stt.executeQuery();
}
catch (SQLException ex)
{
System.out.println("excepcion del try 1º del metodo consulta portada");
}

第三,始终关闭最后块中的连接

莘钧
2023-03-14

从consultaPortada返回从未实际分配的rs。

更改此行:

stt.executeQuery();

收件人:

rs = stt.executeQuery();

你的问题应该消失。

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

  • 问题内容: 我正在尝试执行getPendingSalesOrderIDs()方法,该方法调用方法selectInAsending(…)。 但这显示了一个SQLException,它说java.sql.SQLException:在ResultSet关闭后不允许进行该操作 此处db.endSelect()将关闭所有连接。 我认为问题就在于此。 问题答案: 如果关闭ResultSet,为什么不删除它(在

  • 我正在使用grails 3.3.9构建一个示例hello应用程序。当应用程序被部署时,它工作得很好。当我检查一天左右后,应用程序已经崩溃了。检查日志,我看到一个错误“连接关闭后不允许操作”。看起来mysql数据库连接在某个时候中断了。 下面是我在application.yml中使用的数据库配置 我很欣赏任何关于为什么数据库连接会在一段时间后自动关闭的见解。我该如何预防呢?谢谢你的反馈。

  • 我真的被这个问题困住了,所以我很高兴有人能帮我! 我用java创建了一个登录页面,并在其中创建了一个MYSQL连接。如果您第一次尝试登录,代码可以正常工作,但是在您注销并再次尝试登录之后,我得到了这个错误:com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionException:连接关闭后不允许任何操作。 和DBManager

  • 我目前正在使用MySQL for DB connection开发一个Struts2 Web应用程序,并且在实际工作中遇到了代码部分的问题。恒定误差: 我目前拥有的RequestAction类基本上是我的一个工作项目的完整副本,但由于某些原因,我无法使其用于此应用程序。 请求操作。Java: 不知道为什么连接不工作,我试图乱搞,看看从我的其他项目,看看有什么差异,使连接和无法找到它,除非是给问题。

  • 我试图为通过html形式的文本框检索的查询编写一个JUnit测试。文本检索已经过测试并有效,但我的单元测试失败了。我使用了两个相关的类:QueryController和QueryControlllerTest。我一直在玩弄我在这两个类中关闭的时间和内容,并不断得到错误:结果集关闭后不允许操作。 QueryController测试。Java语言 QueryController。Java语言