code: public <T> T query(String sql, Object[] params, ResultSetHandler<T> rsh)
          throws SQLException {
  
          Connection conn = this.prepareConnection();
  
          try {
              return this.query(conn, sql, params, rsh);
          } finally {
              close(conn);
          }
      }
docs: Executes the given SELECT SQL query and returns a result object.
  The <code>Connection</code> is retrieved from the
  <code>DataSource</code> set in the constructor.
  
  @param sql The SQL statement to execute.
  @param params Initialize the PreparedStatement's IN parameters with
  this array.
  
  @param rsh The handler used to create the result object from
  the <code>ResultSet</code>.
  
  @return An object generated by the handler.
  @throws java.sql.SQLException if a database access error occurs