Java ResultSet - 根据索引获取列名

时间:2011-06-20 09:41:46

标签: java jdbc

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

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

来实现
int index = resultSet.findColumn(columnName);

但我需要反过来,比如:

String column = resultSet.findColumnName(index);

有可能吗?

6 个答案:

答案 0 :(得分:39)

我认为您需要查看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<String, Integer>以便轻松映射它们。

答案 1 :(得分:7)

当然 - 使用java.sql.ResultSetMetaData

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

答案 2 :(得分:2)

resultSet.getMetaData().getColumnName(index);

答案 3 :(得分:0)

使用标准JDBC,您可以获得结果集metadata

ResultSetMetaData metadata = resultSet.getMetaData() 

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

String columnFiveName = metadata.getColumnName(5)

答案 4 :(得分:0)

ResultSetMetaDatagetColumnName()怎么样?


例如:

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

另见

答案 5 :(得分:0)

您应该可以使用ResultSetMetaData执行此操作:

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