As Lorand said, there is only one record returned every time you run your query. When the if statement is executed, you visit the first row, then the while statement is executed, but since there are no more rows to visit, it will always yield false.
Are you aware rs.next() isn't a read-only call? Anytime you use it, you move the pointer in the result set. In order to hit the while loop in your code, you'd have to have at least 2 records from the result.