Package org.firebirdsql.jdbc
Class FBBlob
- java.lang.Object
-
- org.firebirdsql.jdbc.FBBlob
-
- All Implemented Interfaces:
java.sql.Blob,TransactionListener,FirebirdBlob,Synchronizable
public class FBBlob extends java.lang.Object implements FirebirdBlob, TransactionListener, Synchronizable
Firebird implementation ofBlob.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.firebirdsql.jdbc.FirebirdBlob
FirebirdBlob.BlobInputStream, FirebirdBlob.BlobOutputStream
-
-
Field Summary
Fields Modifier and Type Field Description static booleanSEGMENTED
-
Constructor Summary
Constructors Constructor Description FBBlob(GDSHelper c)Create new Blob instance.FBBlob(GDSHelper c, long blob_id)Create instance of this class to access existing Blob.FBBlob(GDSHelper c, long blob_id, FBObjectListener.BlobListener blobListener)Create instance of this class to access existing Blob.FBBlob(GDSHelper c, FBObjectListener.BlobListener blobListener)Create new Blob instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcopyBytes(byte[] bytes, int pos, int len)voidcopyCharacterStream(java.io.Reader reader, long length, Encoding encoding)Copy data from a character stream into this Blob.voidcopyCharacterStream(java.io.Reader reader, Encoding encoding)Copy data from a character stream into this Blob.voidcopyStream(java.io.InputStream inputStream)Copy the contents of anInputStreaminto this Blob.voidcopyStream(java.io.InputStream inputStream, long length)Copy the contents of anInputStreaminto this Blob.FirebirdBlobdetach()Detach this blob.voidfree()java.io.InputStreamgetBinaryStream()java.io.InputStreamgetBinaryStream(long pos, long length)longgetBlobId()Get the identifier for thisBlobbyte[]getBytes(long pos, int length)GDSHelpergetGdsHelper()byte[]getInfo(byte[] items, int buffer_length)Get information about this Blob.java.lang.ObjectgetSynchronizationObject()Get synchronization object.booleanisSegmented()Check if blob is segmented.longlength()longposition(byte[] pattern, long start)longposition(java.sql.Blob pattern, long start)java.io.OutputStreamsetBinaryStream(long pos)intsetBytes(long pos, byte[] bytes)intsetBytes(long pos, byte[] bytes, int offset, int len)voidtransactionStateChanged(FbTransaction transaction, TransactionState newState, TransactionState previousState)Signals that the transaction state changed.voidtruncate(long len)
-
-
-
Field Detail
-
SEGMENTED
public static final boolean SEGMENTED
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
FBBlob
public FBBlob(GDSHelper c, FBObjectListener.BlobListener blobListener)
Create new Blob instance. This constructor creates new fresh Blob, only writing to the Blob is allowed.- Parameters:
c- connection that will be used to write data to blobblobListener- Blob listener instance
-
FBBlob
public FBBlob(GDSHelper c)
Create new Blob instance. This constructor creates new fresh Blob, only writing to the Blob is allowed.- Parameters:
c- connection that will be used to write data to blob.
-
FBBlob
public FBBlob(GDSHelper c, long blob_id, FBObjectListener.BlobListener blobListener)
Create instance of this class to access existing Blob.- Parameters:
c- connection that will be used to access Blob.blob_id- ID of the Blob.blobListener- Blob listener instance
-
FBBlob
public FBBlob(GDSHelper c, long blob_id)
Create instance of this class to access existing Blob.- Parameters:
c- connection that will be used to access Blob.blob_id- ID of the Blob.
-
-
Method Detail
-
getSynchronizationObject
public final java.lang.Object getSynchronizationObject()
Description copied from interface:SynchronizableGet synchronization object.- Specified by:
getSynchronizationObjectin interfaceSynchronizable- Returns:
- object, cannot be
null.
-
free
public void free() throws java.sql.SQLException- Specified by:
freein interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
getBinaryStream
public java.io.InputStream getBinaryStream(long pos, long length) throws java.sql.SQLException- Specified by:
getBinaryStreamin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
getInfo
public byte[] getInfo(byte[] items, int buffer_length) throws java.sql.SQLExceptionGet information about this Blob. This method should be considered as temporary because it provides access to low-level API. More information on how to use the API can be found in "API Guide".- Parameters:
items- items in which we are interested.buffer_length- buffer where information will be stored.- Returns:
- array of bytes containing information about this Blob.
- Throws:
java.sql.SQLException- if something went wrong.
-
length
public long length() throws java.sql.SQLException- Specified by:
lengthin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
isSegmented
public boolean isSegmented() throws java.sql.SQLExceptionDescription copied from interface:FirebirdBlobCheck if blob is segmented. If Blob is segmented, you cannot useFirebirdBlob.BlobInputStream.seek(int)method.- Specified by:
isSegmentedin interfaceFirebirdBlob- Returns:
trueif this blob is segmented, otherwisefalse- Throws:
java.sql.SQLException
-
detach
public FirebirdBlob detach() throws java.sql.SQLException
Description copied from interface:FirebirdBlobDetach 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 an 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:
detachin interfaceFirebirdBlob- Returns:
- instance of
FirebirdBlobthat is not under result set control. - Throws:
java.sql.SQLException- if Blob cannot be detached.
-
getBytes
public byte[] getBytes(long pos, int length) throws java.sql.SQLException- Specified by:
getBytesin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
getBinaryStream
public java.io.InputStream getBinaryStream() throws java.sql.SQLException- Specified by:
getBinaryStreamin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
position
public long position(byte[] pattern, long start) throws java.sql.SQLException- Specified by:
positionin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
position
public long position(java.sql.Blob pattern, long start) throws java.sql.SQLException- Specified by:
positionin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
truncate
public void truncate(long len) throws java.sql.SQLException- Specified by:
truncatein interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
setBytes
public int setBytes(long pos, byte[] bytes) throws java.sql.SQLException- Specified by:
setBytesin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
setBytes
public int setBytes(long pos, byte[] bytes, int offset, int len) throws java.sql.SQLException- Specified by:
setBytesin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
setBinaryStream
public java.io.OutputStream setBinaryStream(long pos) throws java.sql.SQLException- Specified by:
setBinaryStreamin interfacejava.sql.Blob- Throws:
java.sql.SQLException
-
getBlobId
public long getBlobId() throws java.sql.SQLExceptionGet the identifier for thisBlob- Returns:
- This
Blob's identifier - Throws:
java.sql.SQLException- if a database access error occurs
-
copyBytes
public void copyBytes(byte[] bytes, int pos, int len) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
getGdsHelper
public GDSHelper getGdsHelper()
-
copyStream
public void copyStream(java.io.InputStream inputStream, long length) throws java.sql.SQLExceptionCopy the contents of anInputStreaminto this Blob.Calling with length
-1is equivalent to callingcopyStream(InputStream), and will copy the whole stream.- Parameters:
inputStream- the stream from which data will be copiedlength- The maximum number of bytes to read from the InputStream,-1to read whole stream- Throws:
java.sql.SQLException- if a database access error occurs
-
copyStream
public void copyStream(java.io.InputStream inputStream) throws java.sql.SQLExceptionCopy the contents of anInputStreaminto this Blob. Unlike thecopyStream(InputStream, long)method, this one copies bytes until the EOF is reached.- Parameters:
inputStream- the stream from which data will be copied- Throws:
java.sql.SQLException- if a database access error occurs
-
copyCharacterStream
public void copyCharacterStream(java.io.Reader reader, long length, Encoding encoding) throws java.sql.SQLExceptionCopy data from a character stream into this Blob.Calling with length
-1is equivalent to callingcopyCharacterStream(Reader, Encoding).- Parameters:
reader- the source of data to copylength- The maximum number of bytes to copy, or-1to read the whole streamencoding- The encoding used in the character stream- Throws:
java.sql.SQLException
-
copyCharacterStream
public void copyCharacterStream(java.io.Reader reader, Encoding encoding) throws java.sql.SQLExceptionCopy data from a character stream into this Blob. Unlike thecopyCharacterStream(Reader, long, Encoding))} method, this one copies bytes until the EOF is reached.- Parameters:
reader- the source of data to copyencoding- The encoding used in the character stream- Throws:
java.sql.SQLException
-
transactionStateChanged
public void transactionStateChanged(FbTransaction transaction, TransactionState newState, TransactionState previousState)
Description copied from interface:TransactionListenerSignals that the transaction state changed.- Specified by:
transactionStateChangedin interfaceTransactionListener- Parameters:
transaction-FbTransactionthat changed state
-
-