无法从Groovy连接到DB2
问题描述:
我试图在使用IBM的DB2Driver的驱动程序中打开SQL实例。无法从Groovy连接到DB2
有趣的是,当我包括:
def DB2Driver = new DB2Driver()
初始化就好了。
但是当我做
Sql.newInstance(info.getHost(), info.getConnectionMetaData().getParameterValue('username'), info.getConnectionMetaData().getParameterValue('password'), info.getConnectionMetaData().getParameterValue('driverClass'))
或者
Sql.newInstance(info.getHost(), info.getConnectionMetaData().getParameterValue('username'), info.getConnectionMetaData().getParameterValue('password'), 'com.ibm.db2.jcc.DB2Driver')
它将无法打开SQL连接,说合适的驱动程序没有找到。我如何获得与DB2打开的连接?
答
假设你使用的是常规脚本@Grab
和@Grapes
注释,你可能需要configure Grape
for JDBC drivers:
的因为JDBC驱动程序加载的方式,你需要配置葡萄附加JDBC驱动程序的依赖性在系统类加载器
在groovy.sql.Sql
的JDBC DriverManager
来获取连接:DriverManager.getConnection()
。由于它需要附加到系统类加载器的驱动程序依赖关系,因此您需要使用@GrabConfig
来完成此操作。
例如,该脚本
@Grapes([
@Grab(group='org.hsqldb', module='hsqldb', version='2.3.2'),
])
import groovy.sql.Sql
def sql = Sql.newInstance('jdbc:hsqldb:mem:testdb', 'sa', '', 'org.hsqldb.jdbcDriver')
println 'SQL connection ready'
失败例外java.sql.SQLException: No suitable driver found for jdbc:hsqldb:mem:testdb
,但
@Grapes([
@Grab(group='org.hsqldb', module='hsqldb', version='2.3.2'),
@GrabConfig(systemClassLoader=true)
])
它完美的作品。
您是否在使用Grape(例如'@Grab()')来处理对DB2 jdbc驱动程序的依赖关系? –
问题与http://stackoverflow.com/questions/32494835/what-is-classpath-for-groovy-console-jdbc-driver-mark –