java.lang.Object
javax.sql.rowset.serial.SerialBlob
- 所有已实现的接口:
-
Serializable
,Cloneable
,Blob
Java编程语言中对SQL
BLOB
值的序列化映射。
SerialBlob
类提供了一个从Blob
对象创建实例的构造函数。请注意,在从中构造SerialBlob
对象之前,Blob
对象应该已经将SQL BLOB
值的数据传输到客户端。SQL BLOB
值的数据可以在客户端作为字节数组(使用方法Blob.getBytes
)或作为未解释字节流(使用方法Blob.getBinaryStream
)实现。
SerialBlob
方法使得可以将SerialBlob
对象作为字节数组或流进行复制。它们还使得可以在SerialBlob
对象中定位给定字节模式或Blob
对象,并更新或截断Blob
对象。
线程安全性
SerialBlob不适合多个并发线程使用。如果一个SerialBlob将被多个线程使用,则对SerialBlob的访问应该通过适当的同步来控制。
- 自版本:
- 1.5
- 参见:
-
Constructor Summary
ConstructorDescriptionSerialBlob
(byte[] b) 构造一个SerialBlob
对象,它是给定byte
数组的序列化版本。SerialBlob
(Blob blob) 构造一个SerialBlob
对象,它是给定Blob
对象的序列化版本。 -
Method Summary
Modifier and TypeMethodDescriptionclone()
返回此SerialBlob
的克隆。boolean
将此SerialBlob与指定对象进行比较。void
free()
该方法释放SerialBlob
对象并释放其持有的资源。返回此SerialBlob
对象作为输入流。getBinaryStream
(long pos, long length) 返回一个InputStream
对象,其中包含一个部分Blob
值,从指定位置pos
开始,长度为length字节。byte[]
getBytes
(long pos, int length) 从此SerialBlob
对象的给定位置开始,复制指定数量的字节到另一个字节数组。int
hashCode()
返回此SerialBlob
的哈希码。long
length()
检索此SerialBlob
对象字节数组中的字节数。long
position
(byte[] pattern, long start) 返回此SerialBlob
对象中给定字节模式开始的位置,从指定位置开始搜索。long
返回此SerialBlob
对象中给定Blob
对象开始的位置,从指定位置开始搜索。setBinaryStream
(long pos) 检索一个流,可用于写入此Blob
对象表示的BLOB
值。int
setBytes
(long pos, byte[] bytes) 将给定的字节数组写入此Blob
对象表示的BLOB
值,从位置pos
开始,并返回写入的字节数。int
setBytes
(long pos, byte[] bytes, int offset, int length) 将给定的部分或全部byte
数组写入此Blob
对象表示的BLOB
值,并返回写入的字节数。void
truncate
(long length) 将此Blob
对象表示的BLOB
值截断为长度为len
字节。
-
Constructor Details
-
SerialBlob
构造一个SerialBlob
对象,它是给定byte
数组的序列化版本。新的
SerialBlob
对象使用byte
数组中的数据进行初始化,从而允许断开连接的RowSet
对象建立序列化的Blob
对象而不触及数据源。- 参数:
-
b
- 包含要序列化为Blob
对象的数据的byte
数组 - 抛出:
-
SerialException
- 如果在序列化过程中发生错误 -
SQLException
- 如果发生SQL错误
-
SerialBlob
构造一个SerialBlob
对象,它是给定Blob
对象的序列化版本。新的
SerialBlob
对象使用Blob
对象中的数据进行初始化;因此,Blob
对象应该先将SQLBLOB
值的数据从数据库传输到客户端。否则,新的SerialBlob
对象将不包含任何数据。- 参数:
-
blob
- 用于构造此SerialBlob
对象的Blob
对象;不能为null。 - 抛出:
-
SerialException
- 如果在序列化过程中发生错误 -
SQLException
- 如果传递给此构造函数的Blob
是null
- 参见:
-
-
Method Details
-
getBytes
从此SerialBlob
对象的给定位置开始,复制指定数量的字节到另一个字节数组。请注意,如果要复制的字节数大于此
SerialBlob
对象的字节数组长度,则给定的数量将被缩短为数组的长度。- 指定者:
-
getBytes
在接口Blob
中 - 参数:
-
pos
- 要复制的第一个字节在此SerialBlob
对象中的序数位置;编号从1
开始;必须不小于1
且必须小于或等于此SerialBlob
对象的长度 -
length
- 要复制的字节数 - 返回:
-
一个字节数组,是从此
SerialBlob
对象的给定位置开始,包含给定数量连续字节的副本 - 抛出:
-
SerialException
- 如果给定的起始位置超出范围;如果此对象之前已调用free
- 参见:
-
length
检索此SerialBlob
对象字节数组中的字节数。- 指定者:
-
length
在接口Blob
中 - 返回:
-
一个
long
,指示此SerialBlob
对象字节数组的长度 - 抛出:
-
SerialException
- 如果发生错误;如果此对象之前已调用free
-
getBinaryStream
返回此SerialBlob
对象作为输入流。与相关方法setBinaryStream
不同,无论SerialBlob
是使用Blob
对象还是byte
数组创建的,都会生成一个流。- 指定者:
-
getBinaryStream
在接口Blob
中 - 返回:
-
一个包含此
SerialBlob
对象字节数组的java.io.InputStream
对象 - 抛出:
-
SerialException
- 如果发生错误;如果此对象之前已调用free
- 参见:
-
position
返回此SerialBlob
对象中给定字节模式开始的位置,从指定位置开始搜索。- 指定者:
-
position
在接口Blob
中 - 参数:
-
pattern
- 要搜索的字节模式 -
start
- 从此SerialBlob
对象中的字节位置开始搜索;第一个位置为1
;必须不小于1
且不大于此SerialBlob
对象的长度 - 返回:
-
此
SerialBlob
对象中给定模式开始的位置,从指定位置开始搜索;如果未找到模式或给定的起始位置超出范围,则返回-1
;返回值的位置编号从1
开始 - 抛出:
-
SerialException
- 如果在序列化blob时发生错误;如果此对象之前已调用free
-
SQLException
- 如果访问数据库中的BLOB
值时发生错误
-
position
返回此SerialBlob
对象中给定Blob
对象开始的位置,从指定位置开始搜索。- 指定者:
-
position
在接口Blob
中 - 参数:
-
pattern
- 要搜索的Blob
对象; -
start
- 在此SerialBlob
对象中开始搜索的字节位置; 第一个位置是1
; 必须不小于1
且不大于此SerialBlob
对象的长度 - 返回:
-
此
SerialBlob
对象中给定Blob
对象开始的位置,从指定位置开始; 如果未找到模式或给定的起始位置超出范围,则返回-1
; 返回值的位置编号从1
开始 - 抛出:
-
SerialException
- 如果在序列化blob时发生错误; 如果此对象之前已调用free
-
SQLException
- 如果访问数据库中的BLOB
值时出现错误
-
setBytes
将给定的字节数组写入此Blob
对象表示的BLOB
值,从位置pos
开始,并返回写入的字节数。- 指定者:
-
setBytes
在接口Blob
中 - 参数:
-
pos
- 要开始写入的SQLBLOB
值的位置。第一个位置是1
; 必须不小于1
且不大于此SerialBlob
对象的长度+1。 -
bytes
- 要写入此Blob
对象表示的BLOB
值的字节数组 - 返回:
- 写入的字节数
- 抛出:
-
SerialException
- 如果访问BLOB
值时出现错误; 或者设置了无效位置; 如果此对象之前已调用free
-
SQLException
- 如果访问数据库中的BLOB
值时出现错误 - 参见:
-
setBytes
public int setBytes(long pos, byte[] bytes, int offset, int length) throws SerialException, SQLException 将给定的byte
数组的全部或部分写入此Blob
对象表示的BLOB
值,并返回写入的字节数。从给定字节数组中的位置pos
开始写入到BLOB
值;从给定字节数组中写入length
字节。- 指定者:
-
setBytes
在接口Blob
中 - 参数:
-
pos
- 要开始写入的BLOB
对象中的位置。第一个位置是1
; 必须不小于1
且不大于此SerialBlob
对象的长度+1。 -
bytes
- 要写入BLOB
值的字节数组 -
offset
- 从要设置的字节开始读取字节的数组byte
s中的偏移量。第一个偏移位置是0
; 必须不小于0
且不大于字节数组byte
s的长度 -
length
- 从字节数组byte
s中写入BLOB
值的字节数 - 返回:
- 写入的字节数
- 抛出:
-
SerialException
- 如果访问BLOB
值时出现错误; 如果设置了无效位置; 如果设置了无效偏移值; 或者length
和offset
的组合值大于byte
s的长度; 如果此对象之前已调用free
-
SQLException
- 如果访问数据库中的BLOB
值时出现错误。 - 参见:
-
setBinaryStream
检索一个流,可用于写入此Blob
对象表示的BLOB
值。流从位置pos
开始。如果使用Blob
实例化此SerialBlob
对象,则此方法将setBinaryStream()
调用转发到底层Blob
。如果使用byte
数组实例化此SerialBlob
,则会抛出SerialException
。- 指定者:
-
setBinaryStream
在接口Blob
中 - 参数:
-
pos
- 要开始写入的BLOB
值的位置 - 返回:
-
可以写入数据的
java.io.OutputStream
对象 - 抛出:
-
SQLException
- 如果访问BLOB
值时出现错误 -
SerialException
- 如果SerialBlob
未使用支持setBinaryStream()
的Blob
对象实例化; 如果此对象之前已调用free
- 参见:
-
truncate
将此Blob
对象表示的BLOB
值截断为len
字节长度。- 指定者:
-
truncate
在接口Blob
中 - 参数:
-
length
- 要将此Blob
对象表示的BLOB
值截断为的字节长度 - 抛出:
-
SerialException
- 如果访问Blob值时出现错误; 或者要截断的长度大于SerialBlob长度; 如果此对象之前已调用free
-
getBinaryStream
返回一个InputStream
对象,其中包含从指定位置pos
开始的长度为length
字节的部分Blob
值。- 指定者:
-
getBinaryStream
在接口Blob
中 - 参数:
-
pos
- 要检索的部分值的第一个字节的偏移量。Blob
中的第一个字节位于位置1 -
length
- 要检索的部分值的字节长度 - 返回:
-
通过该
InputStream
可以读取部分Blob
值。 - 抛出:
-
SQLException
- 如果pos小于1或pos大于Blob
中的字节数,或者pos + length大于Blob
中的字节数 -
SerialException
- 如果此对象之前已调用free
- 自:
- 1.6
-
free
该方法释放SerialBlob
对象并释放其持有的资源。一旦调用free
方法,对象就无效了。如果多次调用
free
,则后续调用free
将被视为无操作。- 指定者:
-
free
在接口Blob
中 - 抛出:
-
SQLException
- 如果释放Blob的资源时发生错误 - 自:
- 1.6
-
equals
将此SerialBlob与指定对象进行比较。仅当参数不为null
且为表示与此对象相同字节序列的SerialBlob
对象时,结果为true
。 -
hashCode
public int hashCode()返回此SerialBlob
的哈希码。 -
clone
返回此SerialBlob
的克隆。复制品将包含对内部字节数组的克隆的引用,而不是对此SerialBlob
对象的原始内部字节数组的引用。底层的Blob
对象将被设置为null。
-