我想知道是否有办法根据resultSet中的索引获取列名。
我知道如果你想根据columnName获取索引,可以使用
来实现int index = resultSet.findColumn(columnName);
但我需要反过来,比如:
String column = resultSet.findColumnName(index);
有可能吗?
答案 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)
ResultSetMetaData
的getColumnName()
怎么样?
例如:
ResultSetMetaData metaData = resultSet.getMetaData()
metaData.getColumnName(1) ;
另见
答案 5 :(得分:0)
您应该可以使用ResultSetMetaData执行此操作:
ResultSetMetaData rsmd = resultSet.getMetaData();
String column = rsmd.getColumnName(index);