gpt4 book ai didi

java - 在 Groovy 中获取正确版本的 Oracle 驱动程序

转载 作者:行者123 更新时间:2023-12-02 06:14:52 28 4
gpt4 key购买 nike

我有一个 groovy 脚本,它连接到 Oracle 数据库,执行查询,然后将内容写入 CSV 文件。

我像这样连接到数据库:

def db = [url:connectionUrl, driver:"oracle.jdbc.OracleDriver", user:connectionUser, password:connectionPassword]
sql = Sql.newInstance(db)

问题是,我的查询很复杂,并且依赖于正在使用的特定版本的 Oracle JDBC 驱动程序。

在我的机器上,我的类路径 ($GROOVY_HOME/lib/) 中有我需要的 ojdbc6.jar(oracle jdbc 驱动程序的版本)。它加载良好,并且脚本有效。

当我检查驱动程序版本时...

println "Oracle JDBC Driver used: ${sql.getConnection().getMetaData().getDriverVersion()}" //Should be 11.x for this script to work

...脚本显示它正在使用 11.2.0.1.0。

在我们的作业调度软件所在的远程主机上,我有一个类似的设置 - ojdbc6.jar 位于 $GROOVY_HOME/lib 文件夹中。但是,当脚本运行时,它会使用 Oracle 驱动程序 9.2.0.6.0 进行报告。

如何指定构建连接时要使用的 Oracle JDBC 驱动程序的版本?

我尝试过的

使用 java.sql.DriverManager 类,我尝试枚举脚本可用的驱动程序:

DriverManager.getDrivers().toList().each{
println it
println it?.majorVersion
println it?.minorVersion
}

在我的机器上,输出:

oracle.jdbc.OracleDriver@5ff8cef

11

2

在作业调度服务器上,我得到:

sun.jdbc.odbc.JdbcOdbcDriver@a7e0a7e

2

1

我如何告诉 Java/Groovy“使用这个 jdbc,而不是那个?”

最佳答案

似乎是类路径问题。尝试在运行时找到包含 oracle.jdbc.OracleDriver 类的 jar。

您可以使用以下语句:

println oracle.jdbc.OracleDriver.class.protectionDomain.codeSource.location.path

它将显示用于加载 Oracle 驱动程序的 jar 的路径。这可能与您所需的 jar 不同。

您可以从系统属性获取整个类路径:

System.getProperty("java.class.path")

关于java - 在 Groovy 中获取正确版本的 Oracle 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21581253/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com