web-dev-qa-db-fra.com

ResultSet Java - Obtenir le nom de la colonne en fonction de l'index

Je veux savoir s'il existe un moyen d'obtenir un nom de colonne basé sur l'index d'un resultSet.

Je sais que si vous voulez obtenir un index basé sur le nom de colonne, vous pouvez le faire en utilisant 

int index = resultSet.findColumn(columnName);

Mais j'ai besoin de l'inverse, quelque chose comme:

String column = resultSet.findColumnName(index);

C'est possible?

19
Rudy

Je pense que vous devez regarder ResultSet.getMetaData() qui renvoie les méta-données associées à une ResultSet.

Vous pouvez ensuite parcourir les colonnes (utilisez getColumnCount() pour en trouver le nombre) pour trouver la colonne portant le nom indiqué, en vérifiant avec getColumnName() . N'oubliez pas que les index de colonne sont basés sur 1 plutôt que sur 0. Quelque chose comme:

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 vous avez besoin de faire cela pour beaucoup de noms, vous pouvez créer un HashMap<String, Integer> pour les mapper facilement.

39
Jon Skeet

Bien sûr, utilisez Java.sql.ResultSetMetaData .

ResultSetMetaData meta = resultSet.getMetaData();
String column = meta.getColumnName(index);
7
duffymo
resultSet.getMetaData().getColumnName(index);
2
Björn Pollex

Avec JDBC standard, vous pouvez obtenir le métadonnées du jeu de résultats:

ResultSetMetaData metadata = resultSet.getMetaData() 

Cet objet peut ensuite être interrogé pour le nom de la colonne (par index):

String columnFiveName = metadata.getColumnName(5)
0
Andrzej Doyle

Que diriez-vous de ResultSetMetaData 's getColumnName() ?


Par exemple:

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

Voir également

0
Jigar Joshi

Vous devriez pouvoir le faire en utilisant ResultSetMetaData :

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