code: public void setCharacterStream(final int parameterIndex, final Reader reader, final int length)
        throws SQLException {
      if (reader == null) {
        setNull(parameterIndex, ColumnType.BLOB);
        return;
      }
      setParameter(parameterIndex, new ReaderParameter(reader, length, noBackslashEscapes));
      hasLongData = true;
    }
docs: Sets the designated parameter to the given <code>Reader</code> object, which is the given
  number of characters long. When a very large UNICODE value is input to a
  <code>LONGVARCHAR</code> parameter, it may be more practical to send it via a
  <code>java.io.Reader</code> object. The data will be read from the stream as needed until
  end-of-file is reached.  The JDBC driver will do any necessary conversion from UNICODE to the
  database char format.
  
  <P><B>Note:</B> This stream object can either be a standard Java stream object or your own
  subclass that implements the standard interface.</P>
  
  @param parameterIndex the first parameter is 1, the second is 2, ...
  @param reader         the <code>java.io.Reader</code> object that contains the Unicode data
  @param length         the number of characters in the stream
  @throws SQLException if parameterIndex does not correspond to a parameter marker in the SQL
  statement; if a database access error occurs or this method is called on a
  closed
  <code>PreparedStatement</code>