Module org.hsqldb
Package org.hsqldb.jdbc

## Class JDBCBlobClient

- java.lang.Object
- - org.hsqldb.jdbc.JDBCBlobClient

- All Implemented Interfaces:
    `java.sql.Blob`

      public class JDBCBlobClient
      extends java.lang.Object
      implements java.sql.Blob

  A wrapper for HSQLDB BlobData objects. Instances of this class are returned by calls to ResultSet methods.
  Since:
    1.9.0
  Author:
    Fred Toussi (fredt@users dot sourceforge.net)

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JDBCBlobClient​(org.hsqldb.SessionInterface session, org.hsqldb.types.BlobDataID blob)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `clearUpdates()` |
    `void` | `free()` | This method frees the `Blob` object and releases the resources that it holds.
    `java.io.InputStream` | `getBinaryStream()` | Retrieves the `BLOB` value designated by this `Blob` instance as a stream.
    `java.io.InputStream` | `getBinaryStream​(long pos, long length)` | Returns an `InputStream` object that contains a partial `Blob` value, starting with the byte specified by pos, which is length bytes in length.
    `org.hsqldb.types.BlobDataID` | `getBlob()` |
    `byte[]` | `getBytes​(long pos, int length)` | Retrieves all or part of the `BLOB` value that this `Blob` object represents, as an array of bytes.
    `boolean` | `isClosed()` |
    `long` | `length()` | Returns the number of bytes in the `BLOB` value designated by this `Blob` object.
    `long` | `position​(byte[] pattern, long start)` | Retrieves the byte position at which the specified byte array `pattern` begins within the `BLOB` value that this `Blob` object represents.
    `long` | `position​(java.sql.Blob pattern, long start)` | Retrieves the byte position in the `BLOB` value designated by this `Blob` object at which `pattern` begins.
    `java.io.OutputStream` | `setBinaryStream​(long pos)` | Retrieves a stream that can be used to write to the `BLOB` value that this `Blob` object represents.
    `int` | `setBytes​(long pos, byte[] bytes)` | Writes the given array of bytes to the `BLOB` value that this `Blob` object represents, starting at position `pos`, and returns the number of bytes written.
    `int` | `setBytes​(long pos, byte[] bytes, int offset, int len)` | Writes all or part of the given `byte` array to the `BLOB` value that this `Blob` object represents and returns the number of bytes written.
    `void` | `setWritable​(JDBCResultSet result, int index)` |
    `void` | `truncate​(long len)` | Truncates the `BLOB` value that this `Blob` object represents to be `len` bytes in length.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### JDBCBlobClient

          public JDBCBlobClient​(org.hsqldb.SessionInterface session,
                                org.hsqldb.types.BlobDataID blob)

  - ### Method Detail

    - #### length

          public long length()
                      throws java.sql.SQLException

      Returns the number of bytes in the `BLOB` value designated by this `Blob` object.
      Specified by:
        `length` in interface `java.sql.Blob`
      Returns:
        length of the `BLOB` in bytes
      Throws:
        `java.sql.SQLException` - if there is an error accessing the length of the `BLOB`

    - #### getBytes

          public byte[] getBytes​(long pos,
                                 int length)
                          throws java.sql.SQLException

      Retrieves all or part of the `BLOB` value that this `Blob` object represents, as an array of bytes.
      Specified by:
        `getBytes` in interface `java.sql.Blob`
      Parameters:
        `pos` - the ordinal position of the first byte in the `BLOB` value to be extracted; the first byte is at position 1
        `length` - the number of consecutive bytes to be copied
      Returns:
        a byte array containing up to `length` consecutive bytes from the `BLOB` value designated by this `Blob` object, starting with the byte at position `pos`
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB` value

    - #### getBinaryStream

          public java.io.InputStream getBinaryStream()
                                              throws java.sql.SQLException

      Retrieves the `BLOB` value designated by this `Blob` instance as a stream.
      Specified by:
        `getBinaryStream` in interface `java.sql.Blob`
      Returns:
        a stream containing the `BLOB` data
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB` value

    - #### position

          public long position​(byte[] pattern,
                               long start)
                        throws java.sql.SQLException

      Retrieves the byte position at which the specified byte array `pattern` begins within the `BLOB` value that this `Blob` object represents.
      Specified by:
        `position` in interface `java.sql.Blob`
      Parameters:
        `pattern` - the byte array for which to search
        `start` - the position at which to begin searching; the first position is 1
      Returns:
        the position at which the pattern appears, else -1
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB`

    - #### position

          public long position​(java.sql.Blob pattern,
                               long start)
                        throws java.sql.SQLException

      Retrieves the byte position in the `BLOB` value designated by this `Blob` object at which `pattern` begins.
      Specified by:
        `position` in interface `java.sql.Blob`
      Parameters:
        `pattern` - the `Blob` object designating the `BLOB` value for which to search
        `start` - the position in the `BLOB` value at which to begin searching; the first position is 1
      Returns:
        the position at which the pattern begins, else -1
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB` value

    - #### setBytes

          public int setBytes​(long pos,
                              byte[] bytes)
                       throws java.sql.SQLException

      Writes the given array of bytes to the `BLOB` value that this `Blob` object represents, starting at position `pos`, and returns the number of bytes written.
      Specified by:
        `setBytes` in interface `java.sql.Blob`
      Parameters:
        `pos` - the position in the `BLOB` object at which to start writing
        `bytes` - the array of bytes to be written to the `BLOB` value that this `Blob` object represents
      Returns:
        the number of bytes written
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB` value

    - #### setBytes

          public int setBytes​(long pos,
                              byte[] bytes,
                              int offset,
                              int len)
                       throws java.sql.SQLException

      Writes all or part of the given `byte` array to the `BLOB` value that this `Blob` object represents and returns the number of bytes written.
      Specified by:
        `setBytes` in interface `java.sql.Blob`
      Parameters:
        `pos` - the position in the `BLOB` object at which to start writing
        `bytes` - the array of bytes to be written to this `BLOB` object
        `offset` - the offset into the array `bytes` at which to start reading the bytes to be set
        `len` - the number of bytes to be written to the `BLOB` value from the array of bytes `bytes`
      Returns:
        the number of bytes written
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB` value

    - #### setBinaryStream

          public java.io.OutputStream setBinaryStream​(long pos)
                                               throws java.sql.SQLException

      Retrieves a stream that can be used to write to the `BLOB` value that this `Blob` object represents.
      Specified by:
        `setBinaryStream` in interface `java.sql.Blob`
      Parameters:
        `pos` - the position in the `BLOB` value at which to start writing
      Returns:
        a `java.io.OutputStream` object to which data can be written
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB` value

    - #### truncate

          public void truncate​(long len)
                        throws java.sql.SQLException

      Truncates the `BLOB` value that this `Blob` object represents to be `len` bytes in length.
      Specified by:
        `truncate` in interface `java.sql.Blob`
      Parameters:
        `len` - the length, in bytes, to which the `BLOB` value that this `Blob` object represents should be truncated
      Throws:
        `java.sql.SQLException` - if there is an error accessing the `BLOB` value

    - #### free

          public void free()
                    throws java.sql.SQLException

      This method frees the `Blob` object and releases the resources that it holds. The object is invalid once the `free` method is called.

      After `free` has been called, any attempt to invoke a method other than `free` will result in a `SQLException` being thrown. If `free` is called multiple times, the subsequent calls to `free` are treated as a no-op.

      Specified by:
        `free` in interface `java.sql.Blob`
      Throws:
        `java.sql.SQLException` - if an error occurs releasing the Blob's resources
      Since:
        JDK 1.6, HSQLDB 2.0

    - #### getBinaryStream

          public java.io.InputStream getBinaryStream​(long pos,
                                                     long length)
                                              throws java.sql.SQLException

      Returns an `InputStream` object that contains a partial `Blob` value, starting with the byte specified by pos, which is length bytes in length.
      Specified by:
        `getBinaryStream` in interface `java.sql.Blob`
      Parameters:
        `pos` - the offset to the first byte of the partial value to be retrieved. The first byte in the `Blob` is at position 1
        `length` - the length in bytes of the partial value to be retrieved
      Returns:
        `InputStream` through which the partial `Blob` value can be read.
      Throws:
        `java.sql.SQLException` - if pos is less than 1 or if pos is greater than the number of bytes in the `Blob` or if pos + length is greater than the number of bytes in the `Blob`
      Since:
        JDK 1.6, HSQLDB 2.0

    - #### isClosed

          public boolean isClosed()

    - #### getBlob

          public org.hsqldb.types.BlobDataID getBlob()

    - #### setWritable

          public void setWritable​(JDBCResultSet result,
                                  int index)

    - #### clearUpdates

          public void clearUpdates()