package org.caudexorigo.jdbc; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DbHandler { public DbHandler() { super(); } public void handle(final DbPool dbPool, final String sql, final RowHandler row_handler, Object... params) { Db db = null; try { db = dbPool.pick(); handle(db, sql, row_handler, params); } catch (Throwable ex) { throw new RuntimeException(ex); } finally { dbPool.release(db); } } public void handle(final Db db, final String sql, final RowHandler row_handler, final Object... params) { PreparedStatement ps = null; try { ps = db.getPreparedStatement(sql); handle(db, ps, row_handler, params); } catch (Throwable ex) { throw new RuntimeException(ex); } finally { if (!db.useStatementCache()) { Db.closeQuietly(ps); } } } public void handle(final Db db, final PreparedStatement pstmt, final RowHandler row_handler, final Object... params) { ResultSet rs = null; try { rs = db.fetchResultSetWithPreparedStatment(pstmt, params); row_handler.beforeFirst(rs); while (rs.next()) { row_handler.process(rs); } row_handler.afterLast(rs); } catch (Throwable ex) { throw new RuntimeException(ex); } finally { Db.closeQuietly(rs); } } }