Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java oracle jdbc驱动程序版本疯狂_Java_Sql_Oracle_Jdbc_Ora 01722 - Fatal编程技术网

Java oracle jdbc驱动程序版本疯狂

Java oracle jdbc驱动程序版本疯狂,java,sql,oracle,jdbc,ora-01722,Java,Sql,Oracle,Jdbc,Ora 01722,为什么甲骨文提供了不同的服务呢!JDBC驱动程序的版本,例如ojdbc14.jar,适用于每个!数据库版本? 这些文件都有不同的大小,因此可能有不同的内容 背景: 当我们保存数据时,会出现一个随机的、看起来不可复制的错误,说数字无效,我们猜测这是时间戳。但这不是什么特别的声明。大多数情况下,它可以节省很多钱。一个月只有一次看起来无害的声明会失败 因此,我仔细查看了Oracle的下载站点,发现尽管文件共享相同的名称,但没有一个文件大小匹配 我们的产品是在客户维护的数据库上运行的,即客户运行的任何版

为什么甲骨文提供了不同的服务呢!JDBC驱动程序的版本,例如ojdbc14.jar,适用于每个!数据库版本? 这些文件都有不同的大小,因此可能有不同的内容

背景: 当我们保存数据时,会出现一个随机的、看起来不可复制的错误,说数字无效,我们猜测这是时间戳。但这不是什么特别的声明。大多数情况下,它可以节省很多钱。一个月只有一次看起来无害的声明会失败

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

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

为什么他们不将所有版本链接到同一个驱动程序文件? 还是有微小的差异会导致像随机误差这样的影响


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

请参阅


还要记住,时间戳数据类型仅在Oracle 10之后才可用。

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

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

这些驱动程序几乎可以与任何现代数据库版本进行通信。你是说我只是选择了最新的版本,祈祷它有我需要的所有bug修复。。。我对9i的看法是错误的。我们去年就把它们退役了。嗯,我怀疑这是jdbc驱动程序中的一个bug。我会检查代码中的数字转换错误、数字到字符串、字符串到日期等等。我们说的是ORA-01722,无效号码?如果是这样,我会检查调试日志,而不关心驱动程序版本冲突。是的,它是ORA-01722。我们使用PreparedStatements,这意味着类型转换都是由驱动程序完成的。而同样的说法在99.9%的情况下效果良好。当然,我们首先看了一下代码,但似乎没有什么异常。随机的ORA-01722错误通常是由依赖隐式数据类型转换引起的。不要这样做。传递正确的值/对象,不要依赖隐式转换。即使不同的NLS设置也会导致此错误,因此它可能在系统A上工作,但在系统B上不工作。驱动程序文件名中的版本指的是它们要用于的Java版本,而不是驱动程序的版本。我养成了一种习惯,即在下载jar文件时,保存jar文件并附加驱动程序版本,例如ojdbc6-11.2.0.3.0.jar。只要看看最新的驱动程序就可以了。ojdbc14 jar是用哪个java编译器编译的?用JDK1.4的编译器。