class SqlRunner {

    public List<Map<String, Object>> selectAll(String sql, Object... args) throws SQLException {
        PreparedStatement ps = connection.prepareStatement(sql);
        try {
            setParameters(ps, args);
            ResultSet rs = ps.executeQuery();
            return getResults(rs);
        } finally {
            try {
                ps.close();
            } catch (SQLException e) {
                //ignore
            }
        }
    }

    public  SqlRunner(Connection connection);

}