code: protected PreparedStatement getPreparedStatement(String sql,
              String[] columnNames) throws SQLException {
          String replacedSQL = injectSchema(sql);
          return dbConnection.getPreparedStatement(replacedSQL,
                  Arrays.hashCode(columnNames)
                          + replacedSQL, columnNames);
      }
docs: Returns the {@link PreparedStatement} for the sql statement defined by
  <tt>sql</tt> and that expects the columns defined in <tt>columnNames</tt>
  to be returned.
  
  @param sql {@link String}, the sql statement
  @param columnNames <tt>String[]</tt>, the columns names expected in the
  prepared statement's result set
  @return {@link PreparedStatement} the prepared statement for this sql
  statement
  @throws SQLException Thrown if a database exception occurred or if the
  <tt>dbConnection</tt> is no longer valid and cannot be re-established