【发布时间】:2014-02-06 00:15:22
【问题描述】:
我有一个 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 Driver 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,而不是那个?”
【问题讨论】:
-
这听起来像是一个类路径问题。听起来您需要对类路径进行排序,因此 ojdbc6.jar 位于列表的前面。
标签: java sql oracle jdbc groovy