2015-11-06 70 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) 
]) 

它完美的作品。