Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';在ResultSet关闭后,无法使用不允许的操作来纠正错误_Java - Fatal编程技术网

Java Can';在ResultSet关闭后,无法使用不允许的操作来纠正错误

Java Can';在ResultSet关闭后,无法使用不允许的操作来纠正错误,java,Java,方法,在该方法中,我在以下位置收到错误: public ArrayList<Log> selectAllLogs(){ if(openConn()){ ArrayList<Log> list = new ArrayList<Log>(); Boolean doesLogExists = false; String query = "SELECT * FROM logs a LEFT JOIN log_li

方法,在该方法中,我在以下位置收到错误:

public ArrayList<Log> selectAllLogs(){
    if(openConn()){
        ArrayList<Log> list = new ArrayList<Log>();
        Boolean doesLogExists = false;
        String query = "SELECT * FROM logs a LEFT JOIN log_lines s on a.log_id = s.log_id"; 
        try{
            stmt = conn.createStatement();
            rs = stmt.executeQuery(query);  
            Log log = null; 
            while(rs.next()){               
                for (Log l : list) {
                    if(l.getLogId() == rs.getInt("log_id")){
                        log = l;
                        doesLogExists = true;
                        System.out.println("check");
                    }
                }                   
                if(doesLogExists){
                    log.getLogLines().add(rs.getString("log_lines"));                       
                    Iterator<Log> iter = list.iterator();
                    int i = 0;
                    System.out.println("true");
                    while(iter.hasNext()){          
                        if(iter.next().getLogId() == ((list.get(i).getLogId()))){
                            list.remove(i); 
                            list.add(i, log);
                            break;
                        }
                        i++;
                    }                       
                    doesLogExists = false;
                } else {    
                    System.out.println("false");
                    log = new Log();                
                    log.setDateName(rs.getString("log_name"));
                    log.setLogId(rs.getInt("log_id"));
                    log.getLogLines().add(rs.getString("log_lines"));
                    list.add(log);
                }               
            }               
        }
        catch(SQLException sqle){
            sqle.printStackTrace();
        }       
        try {
            closeConn();
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list;
    }
    try {
        closeConn();
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

我用谷歌搜索了例外情况,但我不明白。有人能帮我吗?

您可以从stacktrace中看到,方法
selectAllLogs
中发生异常的语句实际上是对
com.mysql.jdbc.ResultSetImpl.getString
的调用,而不是
list.add(log)语句在您认为发生异常的地方出现了一个“关闭一个”错误


获取SQLException的原因可能是您没有关闭ResultSet。是关于同样的问题。

您关闭了结果集,然后尝试对其执行一些操作,例如读取列值、移动光标、打开或再次关闭。我应该在哪里关闭它呢?我不知道,但看起来您正在将结果集记录在
MainFrameController的回调中(此处的代码中未显示),结果集是关闭的(可能在显示的代码中)。我知道这个主题,就像我说的,我在谷歌上搜索了它,但不理解它。这就是为什么我根据我的问题发布了我自己的问题。在你的时间结束时添加一个ResultSet.close()
    java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:804)
at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:852)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5773)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5693)
at DataLayer.DatabaseConnector.selectAllLogs(DatabaseConnector.java:313)
at model.LogContainer.<init>(LogContainer.java:15)
at model.LogContainer.getInstance(LogContainer.java:20)
at view.LogOverview.initGui(LogOverview.java:91)
at view.LogOverview.<init>(LogOverview.java:27)
at controller.MainFrameController.actionPerformed(MainFrameController.java:65)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
list.add(log);