Може би бихте могли да използвате
DatabaseMetaData databaseMetaData = connection.getMetaData();
databaseMetaData.getColumns(null, null, tableName, "%");
Връща един ред за всяка колона на таблицата.
В този случай ще използвате върнатия ResultSet себе си, а не неговия ResultSetMetaData .
Едно предимство на този подход е, че той не пречи на заключването на база данни и транзакциите.