public class FBBlob extends java.lang.Object implements FirebirdBlob, TransactionListener, Synchronizable
Blob
.FirebirdBlob.BlobInputStream, FirebirdBlob.BlobOutputStream
Modifier and Type | Field and Description |
---|---|
static byte[] |
BLOB_LENGTH_REQUEST |
static boolean |
SEGMENTED |
Constructor and Description |
---|
FBBlob(GDSHelper c)
Create new Blob instance.
|
FBBlob(GDSHelper c,
FBObjectListener.BlobListener blobListener)
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.
|
Modifier and Type | Method and Description |
---|---|
void |
copyBytes(byte[] bytes,
int pos,
int len) |
void |
copyCharacterStream(java.io.Reader reader,
long length,
java.lang.String encoding)
Deprecated.
Method signature will change incompatibly in Jaybird 4
|
void |
copyCharacterStream(java.io.Reader reader,
java.lang.String encoding)
Deprecated.
Method signature will change incompatibly in Jaybird 4
|
void |
copyStream(java.io.InputStream inputStream)
Copy the contents of an
InputStream into this Blob. |
void |
copyStream(java.io.InputStream inputStream,
long length)
Copy the contents of an
InputStream into this Blob. |
FirebirdBlob |
detach()
Detach this blob.
|
void |
free()
This method frees the
Blob object and releases the resources that
it holds. |
java.io.InputStream |
getBinaryStream() |
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. |
long |
getBlobId()
Get the identifier for this
Blob |
byte[] |
getBytes(long pos,
int length)
Retrieves all or part of the
BLOB
value that this Blob object represents, as an array of
bytes. |
GDSHelper |
getGdsHelper() |
byte[] |
getInfo(byte[] items,
int buffer_length)
Get information about this Blob.
|
java.lang.Object |
getSynchronizationObject()
Get synchronization object.
|
boolean |
isSegmented()
Check if blob is segmented.
|
long |
length()
Returns the number of bytes in the
BLOB value
designated by this Blob object. |
long |
position(java.sql.Blob pattern,
long start) |
long |
position(byte[] pattern,
long start) |
java.io.OutputStream |
setBinaryStream(long pos) |
int |
setBytes(long pos,
byte[] bytes) |
int |
setBytes(long pos,
byte[] bytes,
int offset,
int len) |
void |
transactionStateChanged(FbTransaction transaction,
TransactionState newState,
TransactionState previousState)
Signals that the transaction state changed.
|
void |
truncate(long len) |
public static final boolean SEGMENTED
public static final byte[] BLOB_LENGTH_REQUEST
public FBBlob(GDSHelper c, FBObjectListener.BlobListener blobListener)
c
- connection that will be used to write data to blobblobListener
- Blob listener instancepublic FBBlob(GDSHelper c)
c
- connection that will be used to write data to blob.public FBBlob(GDSHelper c, long blob_id, FBObjectListener.BlobListener blobListener)
c
- connection that will be used to access Blob.blob_id
- ID of the Blob.blobListener
- Blob listener instancepublic FBBlob(GDSHelper c, long blob_id)
c
- connection that will be used to access Blob.blob_id
- ID of the Blob.public final java.lang.Object getSynchronizationObject()
Synchronizable
getSynchronizationObject
in interface Synchronizable
null
.public void free() throws java.sql.SQLException
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.
free
in interface java.sql.Blob
java.sql.SQLException
- if an error occurs releasing
the Blob's resourcesjava.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support
this methodpublic java.io.InputStream getBinaryStream(long pos, long length) throws java.sql.SQLException
InputStream
object that contains a partial Blob
value,
starting with the byte specified by pos, which is length bytes in length.getBinaryStream
in interface java.sql.Blob
pos
- the offset to the first byte of the partial value to be retrieved.
The first byte in the Blob
is at position 1length
- the length in bytes of the partial value to be retrievedInputStream
through which the partial Blob
value can be read.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
java.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support
this methodpublic byte[] getInfo(byte[] items, int buffer_length) throws java.sql.SQLException
items
- items in which we are interested.buffer_length
- buffer where information will be stored.java.sql.SQLException
- if something went wrong.public long length() throws java.sql.SQLException
BLOB
value
designated by this Blob
object.length
in interface java.sql.Blob
BLOB
in bytesjava.sql.SQLException
- if there is an error accessing the
length of the BLOB
java.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support
this methodpublic boolean isSegmented() throws java.sql.SQLException
isSegmented
in interface FirebirdBlob
true
if this blob is segmented,
otherwise false
java.sql.SQLException
- if something went wrong.public FirebirdBlob detach() throws java.sql.SQLException
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.
detach
in interface FirebirdBlob
FBBlob
that is not under result set control.java.sql.SQLException
- if Blob cannot be detached.public byte[] getBytes(long pos, int length) throws java.sql.SQLException
BLOB
value that this Blob
object represents, as an array of
bytes. This byte
array contains up to length
consecutive bytes starting at position pos
.getBytes
in interface java.sql.Blob
pos
- the ordinal position of the first byte in the
BLOB
value to be extracted; the first byte is at
position 1length
- the number of consecutive bytes to be copied; the value
for length must be 0 or greaterlength
consecutive bytes from the BLOB
value designated
by this Blob
object, starting with the
byte at position pos
java.sql.SQLException
- if there is an error accessing the
BLOB
value; if pos is less than 1 or length is
less than 0java.sql.SQLFeatureNotSupportedException
- if the JDBC driver does not support
this methodsetBytes(long, byte[])
public java.io.InputStream getBinaryStream() throws java.sql.SQLException
getBinaryStream
in interface java.sql.Blob
java.sql.SQLException
public long position(byte[] pattern, long start) throws java.sql.SQLException
position
in interface java.sql.Blob
java.sql.SQLException
public long position(java.sql.Blob pattern, long start) throws java.sql.SQLException
position
in interface java.sql.Blob
java.sql.SQLException
public void truncate(long len) throws java.sql.SQLException
truncate
in interface java.sql.Blob
java.sql.SQLException
public int setBytes(long pos, byte[] bytes) throws java.sql.SQLException
setBytes
in interface java.sql.Blob
java.sql.SQLException
public int setBytes(long pos, byte[] bytes, int offset, int len) throws java.sql.SQLException
setBytes
in interface java.sql.Blob
java.sql.SQLException
public java.io.OutputStream setBinaryStream(long pos) throws java.sql.SQLException
setBinaryStream
in interface java.sql.Blob
java.sql.SQLException
public long getBlobId() throws java.sql.SQLException
Blob
Blob
's identifierjava.sql.SQLException
- if a database access error occurspublic void copyBytes(byte[] bytes, int pos, int len) throws java.sql.SQLException
java.sql.SQLException
public GDSHelper getGdsHelper()
public void copyStream(java.io.InputStream inputStream, long length) throws java.sql.SQLException
InputStream
into this Blob.
Calling with length -1
is equivalent to calling copyStream(InputStream)
, and will copy
the whole stream.
inputStream
- the stream from which data will be copiedlength
- The maximum number of bytes to read from the InputStream, -1
to read whole streamjava.sql.SQLException
- if a database access error occurspublic void copyStream(java.io.InputStream inputStream) throws java.sql.SQLException
InputStream
into this Blob. Unlike
the copyStream(InputStream, long)
method, this one copies bytes
until the EOF is reached.inputStream
- the stream from which data will be copiedjava.sql.SQLException
- if a database access error occurs@Deprecated public void copyCharacterStream(java.io.Reader reader, long length, java.lang.String encoding) throws java.sql.SQLException
Calling with length -1
is equivalent to calling copyCharacterStream(Reader, String)
.
reader
- the source of data to copylength
- The maximum number of bytes to copy, or -1
to read the whole streamencoding
- The encoding used in the character streamjava.sql.SQLException
@Deprecated public void copyCharacterStream(java.io.Reader reader, java.lang.String encoding) throws java.sql.SQLException
copyCharacterStream(Reader, long, String)
)} method, this one copies bytes
until the EOF is reached.reader
- the source of data to copyencoding
- The encoding used in the character streamjava.sql.SQLException
public void transactionStateChanged(FbTransaction transaction, TransactionState newState, TransactionState previousState)
TransactionListener
transactionStateChanged
in interface TransactionListener
transaction
- FbTransaction
that changed stateCopyright © 2001-2021 Jaybird (Firebird JDBC/JCA) team. All rights reserved.