Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays groovysql与数组参数_Arrays_Stored Procedures_Jdbc_Groovy_Connection - Fatal编程技术网

Arrays groovysql与数组参数

Arrays groovysql与数组参数,arrays,stored-procedures,jdbc,groovy,connection,Arrays,Stored Procedures,Jdbc,Groovy,Connection,我有一个存储过程,它接受Array类型的参数,我想通过groovy.sql.sql.call(…)调用它,但我不知道如何实例化java.sql.Array实例作为参数传递 在普通的JDBC中,我可以通过java.sql.Connection.createArrayOf(…)创建java.sql.Array,但我无法通过groovy.sql.sql获得对连接的引用 注意,我通过传递数据源创建了Sql实例,因此groovy.Sql.Sql.getConnection()返回null。groovy.S

我有一个存储过程,它接受
Array
类型的参数,我想通过
groovy.sql.sql.call(…)
调用它,但我不知道如何实例化
java.sql.Array
实例作为参数传递

在普通的JDBC中,我可以通过
java.sql.Connection.createArrayOf(…)
创建
java.sql.Array
,但我无法通过
groovy.sql.sql
获得对连接的引用


注意,我通过传递数据源创建了Sql实例,因此
groovy.Sql.Sql.getConnection()
返回null。

groovy.Sql.Sql类将根据需要从数据源创建连接,并在完成后将其丢弃。使用
cacheConnection
保持连接,以便您使用:

def sql = new Sql(datasource)
sql.cacheConnection {
    assert sql.connection != null
    println sql.rows('select * from mytable where arraycol = ?',
        sql.connection.createArrayOf('integer', [1, 2, 3] as Object[]))
}

谢谢@ataylor。以您的回答为指导,我发现连接被传递到闭包中,因此您不需要引用sql.getConnection()。我提出了以下我更喜欢的建议:

def sql = new Sql(datasource)
sql.cacheConnection { Connection con ->
    assert con != null
    def array = con.createArrayOf('integer', [1, 2, 3] as Object[]))
    println sql.rows('select * from mytable where arraycol = ?', array)
}