A maioria dos meus códigos de consulta SQL segue este padrão:
sql = "select pato from lagoa";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.execute();
while (rs.next()) {
comando ;
}
Mas às vezes preciso saber quantas linhas foram retornadas dentro do ResultSet. Por exemplo, posso precisar armazenar todos os registros em um ArrayList ou HashMap (isto é viável, porque minha tabela tem poucos registros). Mas quero saber quantos são, para poder instanciar o ArrayList desta maneira:
int tamanho = metodoMagicoQueRetornaONumeroDeLinhasNoResultSet(rs);
ar = new ArrayList(tamanho);
Existe este método ? Já olhei na classe java.sql.ResultSetMetaData (seria a classe mais adequada para isso) e não tem nada parecido.
A solução mais popular na net consiste em usar o cursor do ResultSet para isso. Posicione-o no final, veja o número da linha e devolva o cursor para o início.
rs.afterLast();
int tamanho = rs.getRow();
rs.beforeFirst();
Se esta solução é rápida, é pq internamente as linhas são armazenadas em um array ou Collection ou algum blah. Logo, ele até poderia ter um método para retornar o size do array ou Collection dentro dele, não ?

