Josep Josep - 2 months ago 20
Java Question

java.sql.sqlRecoverableException: Closed statement: next

My code throws

java.sql.sqlRecoverableException: Sentencia cerrada: next


which, in English, I guess it would be:

java.sql.sqlRecoverableException: Closed statement: next


This is my code:

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()]);


}

Any clues of what I may be doing wrong? I have seen two threads on Code Ranch about similar issues, but none of them seemed to provide a solution for my case.

Answer

You are closing the statement prior to retrieving the information from the result set. Move the stmt.close() call after the rs.next() loop (but keep the try/finally).

Comments