Peut-être pourriez-vous utiliser
DatabaseMetaData databaseMetaData = connection.getMetaData();
databaseMetaData.getColumns(null, null, tableName, "%");
Il renvoie une ligne pour chaque colonne du tableau.
Dans ce cas, vous utiliseriez le ResultSet renvoyé lui-même, pas son ResultSetMetaData .
L'un des avantages de cette approche est qu'elle n'interfère pas avec le verrouillage et les transactions de la base de données.