ojdbc14.jar vs. ojdbc6.jar

2022-09-01 05:43:46

我注意到以下差异,但没有在任何地方看到它的记录。我想知道其他人是否注意到了同样的事情,或者是否可以向我指出一些证明相同的文档。

环境:-

Oracle 11g, JDK 1.6, iBatis, PL/SQL

场景:-

ojdbc14.jar:如果 pl/sql 返回一个类型的变量,并且我尝试将其放入 java.sql.Date 变量中,那么一切正常。例:DATE

Date annualDate = (Date) map.get("exam_date");

ojdbc6.jar:如果 pl/sql 返回一个类型的变量,并且我尝试将其放入 java.sql.Date 变量中,那么我得到一个异常:DATE

java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.sql.Date

答案 1

这些驱动程序名称中的“14”和“6”是指编写它们的 JVM。如果您仍在使用JDK 1.4,我会说您遇到了严重的问题,需要升级。JDK 1.4 早已过了其有用的支持寿命。它甚至没有泛型!JDK 6 u21 是 Oracle/Sun 的当前生产标准。如果您还没有,我建议您切换到它。


答案 2

实际上,ojdbc14.jar并没有真正说明驱动程序的真实版本(请参阅JDBC驱动程序下载),除了它早于Oracle 11g。在这种情况下,您应该提供确切的版本。

无论如何,我想你会在日期和时间戳怎么回事中找到一些解释?简而言之,他们改变了9.2驱动程序中的行为,然后在11.1驱动程序中再次更改了行为。

这可以解释您遇到的差异(我建议使用最新版本,即11.2驱动程序)。


推荐