Może mógłbyś użyć
DatabaseMetaData databaseMetaData = connection.getMetaData();
databaseMetaData.getColumns(null, null, tableName, "%");
Zwraca jeden wiersz dla każdej kolumny tabeli.
W tym przypadku użyjesz zwróconego ResultSet sam, a nie jego ResultSetMetaData .
Jedną z zalet tego podejścia jest to, że nie koliduje ono z blokowaniem bazy danych i transakcjami.