This might not be the best approach. The call to PreparedStatement.execute() might actually retrieve a number of records from the database and buffer them, at which point you ask for only one record. This wastes the database's time and network bandwidth. Most databases provide SQL syntax to limit the results return for a query - you would be better off using such a mechanism. One caveat though - the SQL mechanism is not database independent.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com