java.sql.sqlRecoverableException:Closed语句:next

Jos*_*sep 8 java jdbc sqlexception

我的代码抛出

java.sql.sqlRecoverableException: Sentencia cerrada: next
Run Code Online (Sandbox Code Playgroud)

用英语,我猜它会是:

java.sql.sqlRecoverableException: Closed statement: next
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

public TransactionArray() throws SQLException {

  /* Obtenemos la tabla de transacciones. */
  Connection connection;
  connection = ConnectionManager.getConnection(STATISTIC_DATA_BASE);
  Statement stmt = null;
  String query =
          "select * " +
          "from " + "dCellStatistic" + ".F_Transaction";
  ResultSet rs = null;
  try {
     stmt = connection.createStatement();
     rs = stmt.executeQuery(query);
  } catch (SQLException e ) {
     e.printStackTrace();
  } finally {
     if (stmt != null) { stmt.close(); }
  }

  /* Construimos las transacciones a partir de los registros. */
  List<Transaction> transactionList = new ArrayList<Transaction>();
  while (rs.next()) { //THE PROBLEM ARISES IN THIS LINE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     transactionList.add(new Transaction(rs));
  }
  array = transactionList.toArray(new Transaction[transactionList.size()]);
Run Code Online (Sandbox Code Playgroud)

}

我可能做错的任何线索?我在Code Ranch上看到了两个关于类似问题的线程,但它们似乎都没有为我的案例提供解决方案.

Eri*_*zzo 20

您在从结果集中检索信息之前关闭语句.循环stmt.close()后移动调用rs.next()(但保持try/finally).

  • 你应该将`rs.next()`放在主try块中,然后在finally块中保留`stmt.close()`. (2认同)