O Driver JDBC do PostgreSQL que você está usando não aceita você ir até o final e depois voltar para o primeiro registro (rs.first() ), isso é um problema do Driver. Você pode procurar outro driver ou outra solução, me desculpe mas eu nunca trabalhei com PostgreSQL
Encontrei os seguintes links interessantes, dentre eles:
[url=http://javaalmanac.com/egs/java.sql/GetRow.html]Getting the Number of Rows in a Table Using a Scrollable Result Set[url]
Mas a idéia é criar um “Scrollable ResultSet”, assim:
Jah tentei passar esses argumentos pro construtor do ResultSet, mas ai ele nem exibe o resultado… mt estranho. Eu precisaria do numero de linhas pra criar um Object[][] para ser exibido numa JTable. Mas imagino que o mais recomendavel a se fazer eh usar um ArrayList ou algo do tipo.
O ResultSet tem um metodo getArray(int arg0) que retorna uma linha da consulta em Array. Jah tentei associar a um indice do arraylist mas nao funciona… nao sei pq…
Acho que o único jeito para solucionar isso é fazer by the old way de fazer um COUNT(*) e depois fazer o SELECT completo. Para garantir que nada vai mudar entre os dois vc pode usar uma transação.
esses codigos que criam um ResultSet navegavel em ambos os sentidos SOMENTE vão funcionar se o DRIVER JDBC implementar essas funcionalidades.
A API jdbc java é baseada em interfaces, os fabricantes de BD são quem implemetam as funcionalidades…