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.

  • 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