我想知道是否有一种方法可以从resultSet中根据索引获取列名。
我知道如果你想根据列名获取索引,你可以使用
int index = resultSet.findColumn(columnName);
但是我需要另一种方式,就像这样:
String column = resultSet.findColumnName(index);
这可行吗?
我认为您需要查看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>
来方便地映射它们。
ResultSetMetaData meta = resultSet.getMetaData();
String column = meta.getColumnName(index);
resultSet.getMetaData().getColumnName(index);
关于ResultSetMetaData
的getColumnName()
怎么样?
例如:
ResultSetMetaData metaData = resultSet.getMetaData()
metaData.getColumnName(1) ;
参见
你应该可以使用ResultSetMetaData来完成这个任务:
ResultSetMetaData rsmd = resultSet.getMetaData();
String column = rsmd.getColumnName(index);
使用标准的JDBC,您可以获取结果集的元数据:
ResultSetMetaData metadata = resultSet.getMetaData()
然后可以通过索引查询该对象的列名:
String columnFiveName = metadata.getColumnName(5)