为什么Oracle会提供不同的(!)版本的JDBC驱动程序,例如: ojdbc14.jar,每个(!)数据库版本?
这些文件都有不同的大小,因此可能是不同的内容。
背景:
保存数据时,我们得到一个随机且看似不可复制的错误“无效数字”(我们猜测它是时间戳)。但这不是任何特别的声明。大多数时候,它保存得很好。每个月只需一次无害的陈述就会失败。
所以我仔细研究了Oracle的下载网站,发现尽管文件共享同名,但没有一个文件大小匹配。
我们的产品在我们客户维护的数据库上运行,即客户运行的版本和补丁就是这样
那么我们使用什么驱动程序?最新的(Oracle 11g) - 尽管它通常是 9i和 10g数据库?
为什么他们不将所有版本链接到相同的“一个驱动程序适合所有”文件? 或者是否存在微小差异导致像随机错误这样的影响?
编辑:我误解了9i数据库。答案 0 :(得分:18)
请参阅兼容性矩阵 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#02_02
另请注意,timestamp数据类型仅在Oracle 10以后可用。
答案 1 :(得分:3)
当我们将Oracle数据库从8.1.7升级到10.2.0时,我能够使用相同的Oracle jdbc驱动程序(ojdbc14.jar)。所以他们的jdbc驱动程序同时支持很多版本。当然,有些驱动程序可能是错误的,但计划是同时支持更多版本。
答案 2 :(得分:3)
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个主要版本),因此,即使推荐它,也不必在两个层上使用相同版本的产品。