Top Description Fields Constructors Methods
com.mysql.cj.jdbc

public Class Blob

extends Object
implements Blob, OutputStreamWatcher
Class Inheritance
All Implemented Interfaces
com.mysql.cj.protocol.OutputStreamWatcher, java.sql.Blob
Imports
java.io.ByteArrayInputStream, .IOException, .InputStream, .OutputStream, java.sql.SQLException, java.util.concurrent.locks.Lock, .ReentrantLock, com.mysql.cj.Constants, .Messages, com.mysql.cj.exceptions.ExceptionInterceptor, .MysqlErrorNumbers, com.mysql.cj.jdbc.exceptions.SQLError, com.mysql.cj.jdbc.result.ResultSetInternalMethods, com.mysql.cj.protocol.OutputStreamWatcher, .WatchableOutputStream, .WatchableStream

The representation (mapping) in the JavaTM programming language of an SQL BLOB value. An SQL BLOB is a built-in type that stores a Binary Large Object as a column value in a row of a database table. The driver implements Blob using an SQL locator(BLOB), which means that a Blob object contains a logical pointer to the SQL BLOB data rather than the data itself. A Blob object is valid for the duration of the transaction in which is was created. Methods in the interfaces ResultSet, CallableStatement, and PreparedStatement, such as getBlob and setBlob allow a programmer to access an SQL BLOB value. The Blob interface provides methods for getting the length of an SQL BLOB (Binary Large Object) value, for materializing a BLOB value on the client, and for determining the position of a pattern of bytes within a BLOB value. This class is new in the JDBC 2.0 API.

Field Summary

Modifier and TypeField and Description
private byte[]
binaryData

The binary data that makes up this BLOB

private ExceptionInterceptor
private boolean
private final Lock

Constructor Summary

AccessConstructor and Description
pack-priv
Blob(ExceptionInterceptor
exception interceptor
exceptionInterceptor
)

Creates a Blob without data

public
Blob(byte[]
data to fill the Blob
data
,
ExceptionInterceptor
exception interceptor
exceptionInterceptor
)

Creates a BLOB encapsulating the given binary data

pack-priv
Blob(byte[]
data to fill the Blob
data
,
ResultSetInternalMethods
result set
creatorResultSetToSet
,
int
column index
columnIndexToSet
)

Creates an updatable BLOB that can update in-place (not implemented yet).

Method Summary

Modifier and TypeMethod and Description
private void
public void
free()

Implements java.sql.Blob.free.

This method frees the Blob object and releases the resources that it holds.

private byte[]
public InputStream
getBinaryStream()

Implements java.sql.Blob.getBinaryStream.

Retrieves the BLOB value designated by this Blob instance as a stream.

public InputStream
getBinaryStream(long
the offset to the first byte of the partial value to be retrieved. The first byte in the Blob is at position 1.
pos
,
long
the length in bytes of the partial value to be retrieved
length
)

Implements java.sql.Blob.getBinaryStream.

Returns an InputStream object that contains a partial Blob value, starting with the byte specified by pos, which is length bytes in length.

public byte[]
getBytes(long
the ordinal position of the first byte in the BLOB value to be extracted; the first byte is at position 1
pos
,
int
the number of consecutive bytes to be copied; the value for length must be 0 or greater
length
)

Implements java.sql.Blob.getBytes.

Retrieves all or part of the BLOB value that this Blob object represents, as an array of bytes.

public long
length()

Implements java.sql.Blob.length.

Returns the number of bytes in the BLOB value designated by this Blob object.

public long
position(byte[]
the byte array for which to search
pattern
,
long
the position at which to begin searching; the first position is 1
start
)

Implements java.sql.Blob.position.

Retrieves the byte position at which the specified byte array pattern begins within the BLOB value that this Blob object represents.

public long
position(Blob
the Blob object designating the BLOB value for which to search
pattern
,
long
the position in the BLOB value at which to begin searching; the first position is 1
start
)

Implements java.sql.Blob.position.

Retrieves the byte position in the BLOB value designated by this Blob object at which pattern begins.

private void
setBinaryData(byte[] newBinaryData)

public OutputStream
setBinaryStream(long
the position in the BLOB value at which to start writing; the first position is 1
indexToWriteAt
)

Implements java.sql.Blob.setBinaryStream.

Retrieves a stream that can be used to write to the BLOB value that this Blob object represents.

public int
setBytes(long
the position in the BLOB object at which to start writing; the first position is 1
writeAt
,
byte[]
the array of bytes to be written to the BLOB value that this Blob object represents
bytes
)

Implements java.sql.Blob.setBytes.

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.

public int
setBytes(long
the position in the BLOB object at which to start writing; the first position is 1
writeAt
,
byte[]
the array of bytes to be written to this BLOB object
bytes
,
int
the offset into the array bytes at which to start reading the bytes to be set
offset
,
int
the number of bytes to be written to the BLOB value from the array of bytes bytes
length
)

Implements java.sql.Blob.setBytes.

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.

public void
streamClosed(byte[] byteData)

public void
streamClosed(WatchableStream out)

Implements com.mysql.cj.protocol.OutputStreamWatcher.streamClosed.

Called when the OutputStream being watched has .close() called

public void
truncate(long
the length, in bytes, to which the BLOB value that this Blob object represents should be truncated
len
)

Implements java.sql.Blob.truncate.

Truncates the BLOB value that this Blob object represents to be len bytes in length.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

binaryDataback to summary
private byte[] binaryData

The binary data that makes up this BLOB

exceptionInterceptorback to summary
private ExceptionInterceptor exceptionInterceptor
isClosedback to summary
private boolean isClosed
lockback to summary
private final Lock lock

Constructor Detail

Blobback to summary
pack-priv Blob(ExceptionInterceptor exceptionInterceptor)

Creates a Blob without data

Parameters
exceptionInterceptor:ExceptionInterceptor

exception interceptor

Blobback to summary
public Blob(byte[] data, ExceptionInterceptor exceptionInterceptor)

Creates a BLOB encapsulating the given binary data

Parameters
data:byte[]

data to fill the Blob

exceptionInterceptor:ExceptionInterceptor

exception interceptor

Blobback to summary
pack-priv Blob(byte[] data, ResultSetInternalMethods creatorResultSetToSet, int columnIndexToSet)

Creates an updatable BLOB that can update in-place (not implemented yet).

Parameters
data:byte[]

data to fill the Blob

creatorResultSetToSet:ResultSetInternalMethods

result set

columnIndexToSet:int

column index

Method Detail

checkClosedback to summary
private void checkClosed() throws SQLException
freeback to summary
public void free() throws SQLException

Implements java.sql.Blob.free.

Doc from java.sql.Blob.free.

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 an SQLException being thrown. If free is called multiple times, the subsequent calls to free are treated as a no-op.

Annotations
@Override
Exceptions
SQLException:
if an error occurs releasing the Blob's resources
getBinaryDataback to summary
private byte[] getBinaryData()
getBinaryStreamback to summary
public InputStream getBinaryStream() throws SQLException

Implements java.sql.Blob.getBinaryStream.

Doc from java.sql.Blob.getBinaryStream.

Retrieves the BLOB value designated by this Blob instance as a stream.

Returns:InputStream

a stream containing the BLOB data

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value
getBinaryStreamback to summary
public InputStream getBinaryStream(long pos, long length) throws SQLException

Implements java.sql.Blob.getBinaryStream.

Doc from java.sql.Blob.getBinaryStream.

Returns an InputStream object that contains a partial Blob value, starting with the byte specified by pos, which is length bytes in length.

Parameters
pos:long

the offset to the first byte of the partial value to be retrieved. The first byte in the Blob is at position 1.

length:long

the length in bytes of the partial value to be retrieved

Returns:InputStream

InputStream through which the partial Blob value can be read.

Annotations
@Override
Exceptions
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
getBytesback to summary
public byte[] getBytes(long pos, int length) throws SQLException

Implements java.sql.Blob.getBytes.

Doc from java.sql.Blob.getBytes.

Retrieves all or part of the 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.

Parameters
pos:long

the ordinal position of the first byte in the BLOB value to be extracted; the first byte is at position 1

length:int

the number of consecutive bytes to be copied; the value for length must be 0 or greater

Returns:byte[]

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

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value; if pos is less than 1 or length is less than 0
lengthback to summary
public long length() throws SQLException

Implements java.sql.Blob.length.

Doc from java.sql.Blob.length.

Returns the number of bytes in the BLOB value designated by this Blob object.

Returns:long

length of the BLOB in bytes

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the length of the BLOB
positionback to summary
public long position(byte[] pattern, long start) throws SQLException

Implements java.sql.Blob.position.

Doc from java.sql.Blob.position.

Retrieves the byte position at which the specified byte array pattern begins within the BLOB value that this Blob object represents. The search for pattern begins at position start.

Parameters
pattern:byte[]

the byte array for which to search

start:long

the position at which to begin searching; the first position is 1

Returns:long

the position at which the pattern appears, else -1

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB or if start is less than 1
positionback to summary
public long position(Blob pattern, long start) throws SQLException

Implements java.sql.Blob.position.

Doc from java.sql.Blob.position.

Retrieves the byte position in the BLOB value designated by this Blob object at which pattern begins. The search begins at position start.

Parameters
pattern:Blob

the Blob object designating the BLOB value for which to search

start:long

the position in the BLOB value at which to begin searching; the first position is 1

Returns:long

the position at which the pattern begins, else -1

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if start is less than 1
setBinaryDataback to summary
private void setBinaryData(byte[] newBinaryData)
setBinaryStreamback to summary
public OutputStream setBinaryStream(long indexToWriteAt) throws SQLException

Implements java.sql.Blob.setBinaryStream.

Doc from java.sql.Blob.setBinaryStream.

Retrieves a stream that can be used to write to the BLOB value that this Blob object represents. The stream begins at position pos. The bytes written to the stream will overwrite the existing bytes in the Blob object starting at the position pos. If the end of the Blob value is reached while writing to the stream, then the length of the Blob value will be increased to accommodate the extra bytes.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
indexToWriteAt:long

the position in the BLOB value at which to start writing; the first position is 1

Returns:OutputStream

a java.io.OutputStream object to which data can be written

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if pos is less than 1
setBytesback to summary
public int setBytes(long writeAt, byte[] bytes) throws SQLException

Implements java.sql.Blob.setBytes.

Doc from java.sql.Blob.setBytes.

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. The array of bytes will overwrite the existing bytes in the Blob object starting at the position pos. If the end of the Blob value is reached while writing the array of bytes, then the length of the Blob value will be increased to accommodate the extra bytes.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
writeAt:long

the position in the BLOB object at which to start writing; the first position is 1

bytes:byte[]

the array of bytes to be written to the BLOB value that this Blob object represents

Returns:int

the number of bytes written

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if pos is less than 1
setBytesback to summary
public int setBytes(long writeAt, byte[] bytes, int offset, int length) throws SQLException

Implements java.sql.Blob.setBytes.

Doc from java.sql.Blob.setBytes.

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. Writing starts at position pos in the BLOB value; len bytes from the given byte array are written. The array of bytes will overwrite the existing bytes in the Blob object starting at the position pos. If the end of the Blob value is reached while writing the array of bytes, then the length of the Blob value will be increased to accommodate the extra bytes.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
writeAt:long

the position in the BLOB object at which to start writing; the first position is 1

bytes:byte[]

the array of bytes to be written to this BLOB object

offset:int

the offset into the array bytes at which to start reading the bytes to be set

length:int

the number of bytes to be written to the BLOB value from the array of bytes bytes

Returns:int

the number of bytes written

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if pos is less than 1
streamClosedback to summary
public void streamClosed(byte[] byteData)
streamClosedback to summary
public void streamClosed(WatchableStream out)

Implements com.mysql.cj.protocol.OutputStreamWatcher.streamClosed.

Doc from com.mysql.cj.protocol.OutputStreamWatcher.streamClosed.

Called when the OutputStream being watched has .close() called

Parameters
out:WatchableStream

WatchableStream

Annotations
@Override
truncateback to summary
public void truncate(long len) throws SQLException

Implements java.sql.Blob.truncate.

Doc from java.sql.Blob.truncate.

Truncates the BLOB value that this Blob object represents to be len bytes in length.

Note

If the value specified for pos is greater than the length+1 of the BLOB value then the behavior is undefined. Some JDBC drivers may throw an SQLException while other drivers may support this operation.

Parameters
len:long

the length, in bytes, to which the BLOB value that this Blob object represents should be truncated

Annotations
@Override
Exceptions
SQLException:
if there is an error accessing the BLOB value or if len is less than 0