Si usa un ciclo perchè non si sa quanti record restituisca una query e perchè se la si esegue solitamente si è interassti al risultato a meno che non si usino funzioni come max(), count(), ecc...

Per controllare che esista almeno una riga puoi fare:

codice:
if(rs.next()){
 //esiste almeno una riga
}else{
 //non ci sono righe
}
Adesso però se vuoi ottenere i record letti partirai dal secondo e non dal primo.

Non mi sembra che esista un metodo diretto, cmq puoi leggerti la documentazione qui: http://java.sun.com/j2se/1.3/docs/ap...ResultSet.html