public class SerialBlob extends Object implements Blob, Serializable, Cloneable
BLOB
值。
SerialBlob
类提供了一个用于从Blob
对象创建实例的Blob
函数。 需要注意的是Blob
的对象应该已经将SQL BLOB
值的数据置于客户端之前SerialBlob
对象从它建造。 一个SQL的数据BLOB
值可以在客户端上以字节(使用方法的阵列Blob.getBytes
),或者作为未解释的字节流(使用方法Blob.getBinaryStream
)。
SerialBlob
方法可以使SerialBlob
对象的副本作为字节数组或流。 它们还可以在Blob
对象中找到给定的字节模式或SerialBlob
对象,并更新或截断Blob
对象。
SerialBlob不能安全地被多个并发线程使用。 如果一个SerialBlob要由多个线程使用,则应该通过适当的同步来控制对SerialBlob的访问。
Constructor and Description |
---|
SerialBlob(Blob blob)
构造一个
SerialBlob 对象,它是给定的
Blob 对象的序列化版本。
|
SerialBlob(byte[] b)
构造一个
SerialBlob 对象,它是给定的
byte 数组的序列化版本。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
返回此
SerialBlob 的克隆。
|
boolean |
equals(Object obj)
将此SerialBlob与指定对象进行比较。
|
void |
free()
此方法可以释放
SeriableBlob 对象并释放它所拥有的资源。
|
InputStream |
getBinaryStream()
返回此
SerialBlob 对象作为输入流。
|
InputStream |
getBinaryStream(long pos, long length)
返回一个包含部分
Blob 值的
InputStream 对象,从pos指定的字节开始,长度为字节长度。
|
byte[] |
getBytes(long pos, int length)
将指定的字节数(从给定位置开始)从此
SerialBlob 对象复制到另一个字节数组。
|
int |
hashCode()
返回此
SerialBlob 的哈希码。
|
long |
length()
检索此
SerialBlob 对象的字节数组中的字节数。
|
long |
position(Blob pattern, long start)
返回此
SerialBlob 对象中的位置,给定的
Blob 对象开始,开始在指定位置的搜索。
|
long |
position(byte[] pattern, long start)
返回此
SerialBlob 对象中给定字节模式开始的位置,在指定位置开始搜索。
|
OutputStream |
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 对象表示的长度为
len 字节的
BLOB 值。
|
public SerialBlob(byte[] b) throws SerialException, SQLException
SerialBlob
对象,它是给定的byte
数组的序列化版本。
新的SerialBlob
对象使用byte
阵列的数据进行byte
,从而允许断开RowSet
对象建立序列化的Blob
对象,而无需触及数据源。
b
- 包含
byte
序列化的
Blob
对象的数据的
byte
数组
SerialException
- 如果在序列化期间发生错误
SQLException
- 如果发生SQL错误
public SerialBlob(Blob blob) throws SerialException, SQLException
SerialBlob
对象,它是给定的Blob
对象的序列化版本。
新的SerialBlob
对象使用SerialBlob
对象的数据进行Blob
; 因此, Blob
对象之前应该已经将SQL BLOB
的数据从数据库提交给客户端。 否则,新的SerialBlob
对象将不包含任何数据。
blob
- 要Blob
此SerialBlob
对象的SerialBlob
对象;
不能为空。
SerialException
- 如果在序列化期间发生错误
SQLException
- 如果
Blob
传递给这个构造函数是
null
。
Blob
public byte[] getBytes(long pos, int length) throws SerialException
SerialBlob
对象复制到另一个字节数组。
请注意,如果要复制的给定字节数大于此SerialBlob
对象的字节数组的长度,则给定的数字将缩短到数组的长度。
getBytes
在界面
Blob
pos
- 要复制的SerialBlob
对象中的第一个字节的顺序位置;
编号起始于1
;
不得低于1
,且必须小于或等于此SerialBlob
对象的长度
length
- 要复制的字节数
SerialBlob
对象的一个区域的副本,从给定的位置开始并且包含给定的连续字节数
SerialException
- 如果给定的起始位置超出范围;
如果free
以前已经被调用了这个对象
Blob.setBytes(long, byte[])
public long length() throws SerialException
SerialBlob
对象的字节数组中的字节数。
length
在界面
Blob
long
指示此
SerialBlob
对象的字节数组的字节长度
SerialException
- 如果发生错误;
如果free
以前曾被调用此对象
public InputStream getBinaryStream() throws SerialException
SerialBlob
对象作为输入流。
与相关方法setBinaryStream
不同,无论SerialBlob
是使用Blob
对象还是byte
阵列创建,都会生成流。
getBinaryStream
在界面
Blob
java.io.InputStream
对象包含此
SerialBlob
对象的字节数组
SerialException
- 如果发生错误;
如果free
以前曾被调用此对象
setBinaryStream(long)
public long position(byte[] pattern, long start) throws SerialException, SQLException
SerialBlob
对象中给定字节模式开始的位置,在指定位置开始搜索。
position
在界面
Blob
pattern
- 要搜索的字节模式
start
- 此SerialBlob
对象中开始搜索的字节的位置;
第一名是1
;
不得小于1
也不得大于此SerialBlob
对象的长度
SerialBlob
对象中的位置;
-1
如果没有找到模式或给定的起始位置超出范围;
返回值的位置编号从1
开始
SerialException
- 如果串行化blob时发生错误;
如果free
以前已经被调用了这个对象
SQLException
- 访问数据库中的
BLOB
值是否有错误
public long position(Blob pattern, long start) throws SerialException, SQLException
SerialBlob
对象中的位置,给定的
Blob
对象开始,开始在指定位置的搜索。
position
在界面
Blob
pattern
- 要搜索的
Blob
对象;
start
- SerialBlob
开始搜索的SerialBlob
对象中的字节的位置;
第一名是1
;
不得小于1
也不得大于此SerialBlob
对象的长度
SerialBlob
对象中的位置,给定的Blob
对象从指定的位置开始;
-1
如果没有找到模式或给定的起始位置超出范围;
返回值的位置编号从1
开始
SerialException
- 如果串行化blob时发生错误;
如果free
以前曾被调用此对象
SQLException
- 从数据库
BLOB
值时是否有错误
public int setBytes(long pos, byte[] bytes) throws SerialException, SQLException
Blob
对象表示的
BLOB
值,从位置
pos
开始,并返回写入的字节数。
setBytes
在界面
Blob
pos
- 在SQL BLOB
值中开始写入的位置。
第一名是1
;
不得低于1
也不得大于此SerialBlob
对象的长度。
bytes
- 要写入
Blob
对象代表的
BLOB
值的字节数组
SerialException
- 访问BLOB
值时是否有错误;
或者如果设置无效位置;
如果设置了无效的偏移值;
如果free
以前已经被调用了这个对象
SQLException
- 如果从数据库
BLOB
值时出现错误
getBytes(long, int)
public int setBytes(long pos, byte[] bytes, int offset, int length) throws SerialException, SQLException
byte
数组的全部或部分写入Blob
对象表示的BLOB
值,并返回写入的字节数。
写作起始于pos
的BLOB
值;
写入来自给定字节数组的len字节。
setBytes
在界面
Blob
pos
- 在开始写作的BLOB
对象中的位置。
第一名是1
;
不得小于1
也不得大于此SerialBlob
对象的长度。
bytes
- 要写入
BLOB
值的字节数组
offset
- 在开始读取字节的byte
数组中的偏移量。
第一个偏移位置是0
;
不得小于0
也不得大于byte
阵列的长度
length
- 要从字节数组字节写入
BLOB
值的字节
数 。
SerialException
- 访问BLOB
值时是否有错误;
如果设置无效位置;
如果设置了无效的偏移值;
要写入的字节数大于SerialBlob
长度;
或长度和偏移的组合值大于Blob缓冲区;
如果free
先前已被调用此对象
SQLException
- 如果从数据库
BLOB
值出错。
getBytes(long, int)
public OutputStream setBinaryStream(long pos) throws SerialException, SQLException
Blob
对象所代表的BLOB
值的流。
流从位置pos
开始。
如果此SerialBlob
对象使用Blob Blob
,则此方法将setBinaryStream()
调用转发到setBinaryStream()
Blob
。
如果这SerialBlob
与实例byte
阵列,一个SerialException
被抛出。
setBinaryStream
在界面
Blob
pos
- 在开始写作的
BLOB
值的位置
java.io.OutputStream
对象
SQLException
- 访问
BLOB
值时是否存在错误
SerialException
- 如果SerialBlob未实例化与支持setBinaryStream()
的Blob
对象;
如果free
以前已经被调用了这个对象
getBinaryStream()
public void truncate(long length) throws SerialException
Blob
对象表示的长度为
len
字节的
BLOB
值。
truncate
在界面
Blob
length
- 此
Blob
对象所代表的
BLOB
值的长度(以字节为单位)应被截断
SerialException
- 访问Blob值是否有错误;
或者截断长度大于SerialBlob长度;
如果free
以前已经被调用了这个对象
public InputStream getBinaryStream(long pos, long length) throws SQLException
InputStream
对象,该对象包含部分
Blob
值,以pos指定的字节开头,长度为长度字节。
getBinaryStream
在界面
Blob
pos
- 要检索的部分值的第一个字节的偏移量。
Blob
的第一个字节在位置1
length
- 要检索的部分值的字节长度
InputStream
可以读取部分
Blob
值。
SQLException
- 如果pos小于1,或者如果pos大于
Blob
中的字节数,或者如果pos +长度大于
Blob
中的字节数
SerialException
- 如果
free
方法以前是在此对象上调用的
public void free() throws SQLException
SeriableBlob
对象并释放它所拥有的资源。
调用free
方法后,该对象无效。
如果free
被多次调用,在后续调用free
被视为无操作。
free
在界面
Blob
SQLException
- 如果发布错误发布Blob的资源
public boolean equals(Object obj)
true
当且仅当参数不是null
并且是SerialBlob
对象,它表示与该对象相同的字节序列。
equals
在类别
Object
obj
- 对比这个
SerialBlob
的对象
true
如果给定的对象表示
SerialBlob
相当于此SerialBlob,
false
否则
Object.hashCode()
, HashMap
public int hashCode()
SerialBlob
的哈希码。
hashCode
在类别
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)