Oracle 19c upgrade: JDBC error java.sql.SQLRecoverableExcept



我们最近将Oracle数据库从11g版本2升级到19c。

现在我们有Oracle 19c数据库服务器,JDK 1.8和ojdbc6.jar组合。

我们有一些java代码来创建具有可滚动和并发只读ResultSet特性的JDBC语句对象。使用上述组合时,JDBC查询执行失败,出现以下错误

Approach1:

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);                   
ResultSet resultSet = statement.executeQuery(query);

升级后语句。executequery()方法抛出以下异常

java.sql.SQLRecoverableException: Closed Connection
at oracle.jdbc.driver.OracleStatement.ensureOpen(OracleStatement.java:4477)
at oracle.jdbc.driver.OracleStatement.clearWarnings(OracleStatement.java:3430)
at oracle.jdbc.driver.OracleStatement.prepareForNewResults(OracleStatement.java:3946)
at oracle.jdbc.driver.OracleStatement.doScrollExecuteCommon(OracleStatement.java:5246)
at oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:5302)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1325)
at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:422)
at JDBCConnectionUtilDebug.getQueryOutput(JDBCConnectionUtilDebug.java:294)

但是如果我使用以下方法运行相同的sql查询,那么它工作得很好

Approach2:

Statement stat = connection.createStatement();
boolean ret = stat.execute(query");
if (ret) {
ResultSet rs = stat.getResultSet();

任何帮助/指针为什么apach1失败,但apach2正在工作?

感谢@Mark Rotteveel和@ibre5041的回复。

根据[什么是Oracle JDBC版本和JDK版本?]]https://www.oracle.com/in/database/technologies/faq-jdbc.html

组合19C数据库,java 1.8和ojdbc6.jar不兼容。

Oracle JDBC驱动程序始终兼容最新的JDK版本在每个新版本中。在某些版本中,JDBC驱动程序支持多个JDK版本。使用下表选择正确的JDBC

Oracle数据库版本

19.倍

特定于版本的JDBC Jar文件

  • JDBC 4.3 in ojdbc10.jar
  • JDBC 4.2 in ojdbc8.jar

在使用ojdbc8.jar而不是ojdbc6.jar后,两个查询执行方法都运行良好。

相关内容

  • 没有找到相关文章

最新更新