Module org.firebirdsql.jaybird
Package org.firebirdsql.jdbc

# Class FBCachedBlob

java.lang.Object
org.firebirdsql.jdbc.FBCachedBlob

All Implemented Interfaces:
  `Blob`, `FirebirdBlob`

@InternalApi public final class FBCachedBlob extends Object implements FirebirdBlob
This class represents a cached blob field.

This class is internal API of Jaybird. Future versions may radically change, move, or make inaccessible this type. For the public API, refer to the `Blob` and `FirebirdBlob` interfaces.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.firebirdsql.jdbc.FirebirdBlob

  `FirebirdBlob.BlobInputStream, FirebirdBlob.BlobOutputStream`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FBCachedBlob(byte[] data)`
  Create an instance using the cached data.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `FirebirdBlob`
  `detach()`
  Detach this blob.
  `void`
  `free()`
  `InputStream`
  `getBinaryStream()`
  `InputStream`
  `getBinaryStream(long pos, long length)`
  `byte[]`
  `getBytes()`
  Gets the byte content of this blob as a byte array.
  `byte[]`
  `getBytes(long pos, int length)`
  `boolean`
  `isSegmented()`
  Check if blob is segmented.
  `long`
  `length()`
  Get the length of the cached blob field.
  `long`
  `position(byte[] pattern, long start)`
  Find the first entry of the specified pattern.
  `long`
  `position(Blob pattern, long start)`
  Find the first entry of the specified pattern.
  `OutputStream`
  `setBinaryStream(long pos)`
  Set the contents of blob as binary stream.
  `int`
  `setBytes(long pos, byte[] bytes)`
  Set contents of the blob.
  `int`
  `setBytes(long pos, byte[] bytes, int offset, int len)`
  Set the contents of blob.
  `void`
  `truncate(long length)`
  Truncate the blob to specified length.

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

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

- ## Constructor Details

  - ### FBCachedBlob

    public FBCachedBlob(byte[] data)
    Create an instance using the cached data.
    Parameters:
      `data` - array of bytes containing the cached data.

- ## Method Details

  - ### detach

    public FirebirdBlob detach() throws SQLException
    Description copied from interface: `FirebirdBlob`
    Detach this blob. This method creates new instance of the same blob database object that is not under result set control. When result set is closed, all associated resources are also released, including open blob streams. This method creates a new instance of blob object with the same blob ID that can be used even when result set is closed.

    Note, detached blob will not remember the stream position of this object. This means that you cannot start reading data from the blob, then detach it, and then continue reading. Reading from detached blob will begin at the blob start.

    Specified by:
      `detach` in interface `FirebirdBlob`
    Returns:
      instance of `FirebirdBlob` that is not under result set control.
    Throws:
      `SQLException` - if Blob cannot be detached.

  - ### isSegmented

    public boolean isSegmented() throws SQLException
    Check if blob is segmented. If Blob is segmented, you cannot use `FirebirdBlob.BlobInputStream.seek(int)` method.

    An instance of `FBCachedBlob` returns `false` always.

    Specified by:
      `isSegmented` in interface `FirebirdBlob`
    Returns:
      `true` if this blob is segmented, otherwise `false`
    Throws:
      `SQLException`

  - ### length

    public long length() throws SQLException
    Get the length of the cached blob field.
    Specified by:
      `length` in interface `Blob`
    Returns:
      length of the cached blob field or -1 if the field is null.
    Throws:
      `SQLException`

  - ### getBytes

    public byte[] getBytes(long pos, int length) throws SQLException
    Specified by:
      `getBytes` in interface `Blob`
    Throws:
      `SQLException`

  - ### getBytes

    public byte[] getBytes() throws SQLException
    Description copied from interface: `FirebirdBlob`
    Gets the byte content of this blob as a byte array.
    Specified by:
      `getBytes` in interface `FirebirdBlob`
    Returns:
      byte array with blob content (may return `null` for certain cached blobs)
    Throws:
      `SQLException` - for database access errors, or if the blob size exceeds the maximum safe array size (i.e. `Integer.MAX_VALUE` - 8)

  - ### position

    public long position(byte[] pattern, long start) throws SQLException
    Find the first entry of the specified pattern.
    Specified by:
      `position` in interface `Blob`
    Throws:
      `SQLException` - always, not yet implemented.

  - ### position

    public long position(Blob pattern, long start) throws SQLException
    Find the first entry of the specified pattern.
    Specified by:
      `position` in interface `Blob`
    Throws:
      `SQLException` - always, not yet implemented.

  - ### getBinaryStream

    public InputStream getBinaryStream() throws SQLException
    Specified by:
      `getBinaryStream` in interface `Blob`
    Throws:
      `SQLException`

  - ### getBinaryStream

    public InputStream getBinaryStream(long pos, long length) throws SQLException
    Specified by:
      `getBinaryStream` in interface `Blob`
    Throws:
      `SQLException`

  - ### setBytes

    public int setBytes(long pos, byte[] bytes) throws SQLException
    Set contents of the blob.
    Specified by:
      `setBytes` in interface `Blob`
    Throws:
      `SQLException` - always, set methods are not relevant in cached state.

  - ### setBytes

    public int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException
    Set the contents of blob.
    Specified by:
      `setBytes` in interface `Blob`
    Throws:
      `SQLException` - always, set methods are not relevant in cached state.

  - ### setBinaryStream

    public OutputStream setBinaryStream(long pos) throws SQLException
    Set the contents of blob as binary stream.
    Specified by:
      `setBinaryStream` in interface `Blob`
    Throws:
      `SQLException` - always, set methods are not relevant in cached state.

  - ### truncate

    public void truncate(long length) throws SQLException
    Truncate the blob to specified length.
    Specified by:
      `truncate` in interface `Blob`
    Throws:
      `SQLException` - always, truncate is not relevant in cached state.

  - ### free

    public void free() throws SQLException
    Specified by:
      `free` in interface `Blob`
    Throws:
      `SQLException`