2012-04-02 86 views
-2

你好当我尝试执行我的代码,我得到错误:值java.sql.SQLException:结果集关闭

ERROR [TripDAO] TripDAO: findAllTripsByActivityId() 
      java.sql.SQLException: The result set is closed. 

方法在那里我得到错误的样子:

public List<Trip> findAllTripsByActivityId(int id) { 
    List<Trip> trips = new ArrayList<Trip>(); 

    if (obtainConnection()) { 
     try { 
      PreparedStatement stm = null; 
      ResultSet rs = null; 
      stm = con.prepareStatement(findAllTripsByActivityIdQuery 
        .toString()); 
      logger.info("Wybrano id: " + id); 
      stm.setInt(1, id); 
      rs = stm.executeQuery(); 
      while (rs.next()) { 
       trips.add(setInObject(rs)); 
      } 
     } catch (Exception e) { 
      logger.error("TripDAO: findAllTripsByActivityId() " + e); 
     } finally { 
      closeConnection(); 
     } 
    } 
    return trips; 
} 

public Trip setInObject(ResultSet rs) throws SQLException { 
    Trip trip = new Trip(); 
    int id = rs.getInt("id"); 
    trip.setId(id); 
    ... 
    return trip; 
} 

我有不知道这段代码中可能会出现什么错误。你可以帮我吗?

+4

你会打印整个堆栈跟踪吗?也许底层流由于某种原因被关闭。 – 2012-04-02 19:03:09

+0

在那个'...'的某个地方,你没有发帖,你正在关闭结果集。 – 2012-04-02 19:07:09

+0

对不起,我完全误解了这个问题。 – everton 2012-04-02 19:45:25

回答

0

您正在将整个ResultSet传递给setInObject方法,这可能是它的缺点。尝试从findAllTripsByActivityId方法中提取结果集中的值。

相关问题