Have you tried closing the first ResultSet before attempting to re-use the original Statement ?
On a wider issue you seem to be attempting to write a DB Connection Pool, there are plenty of these out there already without needing to add an extra layer. My biggest concern would be to ensure that DBConnections, Statements and ResultSets are closed properly (returned to the pool of available connections in the case of a Connection) when they have served their purpose. As a part of best practise I ALWAYS put the retrieval of the Connection and the creation and use of Statements and ResultSets into a try{..}catch.. finally{..} structure so that I can ensure that I do the necessary housework in the finally block.
The non-release of DB Connections upon an error is one of the most common reasons for system failure that I have seen in
Java applications.
HTH
Andy Bowes<br />SCJP, SCWCD<br />I like deadlines, I love the whoosing noise they make as they go flying past - Douglas Adams