2015-11-06 72 views
1

我试图在使用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打开的连接?

+1

您是否在使用Grape(例如'@Grab()')来处理对DB2 jdbc驱动程序的依赖关系? –

+0

问题与http://stackoverflow.com/questions/32494835/what-is-classpath-for-groovy-console-jdbc-driver-mark –

回答

1

假设你使用的是常规脚本@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) 
]) 

它完美的作品。