19

为什么 Oracle 为每个(!)数据库版本提供不同(!)版本的 JDBC 驱动程序,例如 ojdbc14.jar?
这些文件都有不同的大小,因此可能有不同的内容。

背景:
我们在保存数据时收到一个随机且看似不可重现的错误,说“无效数字”(我们猜测它是时间戳)。但这不是任何特定的陈述。大多数时候,它保存得很好。一个月一次,看似无害的声明就会失败。

所以我仔细查看了 Oracle 的下载站点,发现尽管文件共享相同的名称,但没有一个文件大小匹配。

我们的产品在客户维护的数据库上运行,即客户运行的任何版本和补丁都是如此。
那么我们使用什么驱动呢?最新的(Oracle 11g)——尽管它通常是9i 和10g 数据库?

他们为什么不将所有版本链接到同一个“一个驱动程序适合所有人”文件?
或者是否存在细微的差异会导致我们的随机错误等影响?

编辑:我误解了 9i 数据库。

4

3 回答 3

23

请参阅 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#02_02上的兼容性矩阵

另请注意,时间戳数据类型仅在 Oracle 10 之后才可用。

于 2009-04-16T13:56:56.037 回答
11

ojdbc14.jar、ojdbc5.jar、ojdbc6.jar、ojdbc7.jar 和 ojdbc8.jar 中的数字指的是使用的 Java 编译器的版本。每个版本的 Java 都带有新的 JDBC API,因此这些数字对于了解预期内容很有用。例如在 Java 8 中,有一个新方法executeLargeUpdate. java.sql.PreparedStatement此方法将在 ojdbc8.jar 中实现,但不在 ojdbc7.jar 中实现。此外,如果您的运行时使用 Java 7,那么您知道您不能使用 ojdbc8.jar,否则您会遇到java.lang.UnsupportedClassVersionError错误。这就是 Oracle 在 jar 名称中包含这些数字的原因。另请注意,如果您想知道 jar 来自哪个 Oracle 数据库版本,您可以运行java -jar ojdbc8.jar. 数据库和驱动程序都向后兼容(最多 1 个主要版本),因此,即使建议这样做,您也不必在两个层上使用相同版本的产品。

于 2018-02-15T13:01:12.233 回答
3

当我们将 Oracle 数据库从 8.1.7 升级到 10.2.0 时,我能够使用相同的 Oracle jdbc 驱动程序 (ojdbc14.jar)。所以他们的jdbc驱动同时支持好几个版本。当然,有些驱动程序可能有问题,但计划是同时支持更多版本。

于 2009-04-16T17:08:51.883 回答