Java ResultSet - 根据索引获取列名[重复]

Posted

技术标签:

【中文标题】Java ResultSet - 根据索引获取列名[重复]【英文标题】:Java ResultSet - get Column name based on Index [duplicate] 【发布时间】:2011-09-18 13:23:20 【问题描述】:

我想知道是否有办法根据结果集中的索引获取列名。

我知道如果你想根据 columnName 获取索引,你可以使用

int index = resultSet.findColumn(columnName);

但我需要相反的方式,例如:

String column = resultSet.findColumnName(index);

有可能吗?

【问题讨论】:

【参考方案1】:

我认为您需要查看ResultSet.getMetaData(),它返回与ResultSet 关联的元数据。

然后您可以遍历列(使用getColumnCount() 找出有多少列)以查找具有给定名称的列,并使用getColumnName() 检查。不要忘记列索引是从 1 开始的,而不是从 0 开始的。比如:

ResultSetMetaData metaData = resultSet.getMetaData();

int count = metaData.getColumnCount();
for (int i = 1; i <= count; i++)

    if (metaData.getColumnName(i).equals(desiredColumnName))
    
        // Whatever you want to do here.
    

如果您需要为很多名称执行此操作,您可能需要构建一个HashMap&lt;String, Integer&gt; 以轻松映射它们。

【讨论】:

【参考方案2】:

您应该可以使用ResultSetMetaData:

ResultSetMetaData rsmd = resultSet.getMetaData();
String column = rsmd.getColumnName(index);

【讨论】:

【参考方案3】:

ResultSetMetaData 'sgetColumnName() 怎么样?


例如:

ResultSetMetaData metaData = resultSet.getMetaData()
metaData.getColumnName(1) ;

另见

how-to-get-table-structre-of-a-database-in-java

【讨论】:

【参考方案4】:

使用标准JDBC,可以得到结果集的metadata:

ResultSetMetaData metadata = resultSet.getMetaData() 

然后可以查询该对象的列名(按索引):

String columnFiveName = metadata.getColumnName(5)

【讨论】:

【参考方案5】:
resultSet.getMetaData().getColumnName(index);

【讨论】:

【参考方案6】:

当然 - 使用java.sql.ResultSetMetaData。

ResultSetMetaData meta = resultSet.getMetaData();
String column = meta.getColumnName(index);

【讨论】:

以上是关于Java ResultSet - 根据索引获取列名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JAVA 中的 ResultSet 或 ResultSetMetaData 对象中获取数据库表的主键的列名?

如何从子查询中获取 ResultSet 的别名?

如何从java中的结果集中获取列名[重复]

按名称从 ResultSet 中获取值

JDBC——ResultSet结果集对象

Java For each 如何获取索引