gpt4 book ai didi

java - 判断groovy.sql中Oracle查询结果的数据类型

转载 作者:行者123 更新时间:2023-11-29 03:01:31 29 4
gpt4 key购买 nike

在开始处理查询结果之前,有没有一种方法可以确定查询结果中各个列的数据类型?

import groovy.sql.*

rdb = Sql.newInstance('jdbc:oracle:thin:@(conn)',
'usr',
'pwd','oracle.jdbc.driver.OracleDriver')

String query = '''select * from sample_data'''

// Need to know data types of columns here so I can prepare
// for the row processing

rdb.eachRow(query) {
// do something with each row
}

rdb.close()

我想查询 Oracle 数据字典,但如果您有通用查询,这不是最好的方法 - 我必须先从查询创建一些表。

最佳答案

要从查询结果集中获取 SQL 类型,您需要结果集的 ResultSetMetaData .幸运的是,Groovy Sql 提供了一种获取它的方法。这有点奇怪,但它有效:

def columnTypes = [:]
def metaClosure = { metaData ->
/* I'm called once by Sql.eachRow() with a ResultSetMetaData. */
columnTypes = (1..metaData.columnCount).collectEntries {
[(metaData.getColumnName(it)): metaData.getColumnType(it)]
}
}

rdb.eachRow('SELECT * FROM person', metaClosure) { row ->
/*
* The result set SQL types and row values are available here.
* Examples:
* def value = row['column_name']
* def type = columnTypes['column_name']
*/
}

在我的示例中,我使用列名作为键,但也可以(并且更可靠)使用列索引代替。返回的 SQL 类型是 java.sql.Types 中的类型.

关于java - 判断groovy.sql中Oracle查询结果的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34537176/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com