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?
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.
Bien sûr, utilisez Java.sql.ResultSetMetaData .
ResultSetMetaData meta = resultSet.getMetaData();
String column = meta.getColumnName(index);
resultSet.getMetaData().getColumnName(index);
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)
Que diriez-vous de ResultSetMetaData
's getColumnName()
?
Par exemple:
ResultSetMetaData metaData = resultSet.getMetaData()
metaData.getColumnName(1) ;
Voir également
Vous devriez pouvoir le faire en utilisant ResultSetMetaData :
ResultSetMetaData rsmd = resultSet.getMetaData();
String column = rsmd.getColumnName(index);