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.