2011-06-20 42 views
18

我想知道是否有方法根據resultSet中的索引獲取列名。Java結果集 - 根據索引獲取列名

我知道,如果你希望得到一個基於列名的索引,你可以通過使用

int index = resultSet.findColumn(columnName); 

但我需要周圍的其他方式,像:

String column = resultSet.findColumnName(index); 

是有可能嗎?

回答

39

我認爲你需要看看ResultSet.getMetaData()返回與ResultSet相關的元數據。

然後,您可以迭代列(使用getColumnCount()找出有多少列)以查找具有給定名稱的列,並使用​​進行檢查。不要忘記,列索引是基於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>輕鬆映射。

2
resultSet.getMetaData().getColumnName(index); 
0

採用標準的JDBC,就可以得到結果集的metadata

ResultSetMetaData metadata = resultSet.getMetaData() 

該對象可被查詢的列名(指數):

String columnFiveName = metadata.getColumnName(5) 
0

您應該可以使用ResultSetMetaData

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