2011-06-20 38 views
18

Quiero saber si hay una manera de obtener un nombre de columna basado en el índice de un resultSet.Java ResultSet - get Nombre de columna basado en el índice

Sé que si usted desea conseguir índice basado en el columnName, puede hacerlo mediante el uso de

int index = resultSet.findColumn(columnName); 

Pero necesito al revés, algo así como:

String column = resultSet.findColumnName(index); 

Es ¿es posible?

Respuesta

39

creo que hay que buscar en ResultSet.getMetaData() que devuelve el meta-datos asociados con un ResultSet.

Puede iterar sobre las columnas (use getColumnCount() para averiguar cuántas hay) para buscar la columna con el nombre de pila y verificar con getColumnName(). No olvide que los índices de columna están basados ​​en 1, en lugar de en 0. Algo así como:

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. 
    } 
} 

Si necesita hacer esto para una gran cantidad de nombres, es posible que desee construir una HashMap<String, Integer> para mapear fácilmente.

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

Con JDBC estándar, puede obtener el resultado del conjunto metadata:

ResultSetMetaData metadata = resultSet.getMetaData() 

Este objeto puede ser consultada por el nombre de columna (por el índice):

String columnFiveName = metadata.getColumnName(5) 
0

Debería poder hacer esto usando ResultSetMetaData:

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