【发布时间】:2018-06-09 01:57:51
【问题描述】:
我在我的应用程序中使用 java 1.8 和 oracle 12c 版本。作为其中的一部分,我有下面的代码来关闭语句。
protected static void close(Statement p_stmt)
throws DAOException
{
if (p_stmt != null) {
try {
p_stmt.close();
} catch (SQLException sqle) {
m_logger.error("Error closing statement", sqle);
throw new DAOException("Error closing statement", sqle);
}
}
}
当这个方法执行时,我遇到了下面的错误,但它并没有持续发生。
Error closing statement
java.sql.SQLRecoverableException: Closed Connection
at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:4220)
at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1431)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1410)
at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:102)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.close(OraclePreparedStatementWrapper.java:82)
我可以得到一些帮助来找出这个问题的根本原因吗?
我的电话号码是:
finally
{
// do not close the connection here
close(result);
close(stmt);
}
请让我知道更多信息
【问题讨论】:
-
为了帮助您,我们需要一些其他信息:向我们展示您如何管理连接,如何调用 close 方法...
-
用调用代码编辑了我的问题
-
您使用的是哪个 java 版本?如果 java >=1.7 为什么你不使用 try-with-resources 语句,所以你不必手动处理这些东西?
-
我正在使用主题中指定的 java 1.8,在 finally 块中我正在关闭语句
-
您的问题解决了吗?分享完整代码