- java.lang.Object
-
- javax.sql.rowset.serial.SerialBlob
-
- 实现的所有接口
-
Serializable
,Cloneable
,Blob
public class SerialBlob extends Object implements Blob, Serializable, Cloneable
SQL编程语言中的序列化映射,具有SQLBLOB
值。SerialBlob
类提供了一个用于从Blob
对象创建实例的Blob
函数。 需要注意的是Blob
对象应该已经将SQLBLOB
一个前值的数据置于客户端SerialBlob
对象从它建造。 SQLBLOB
值的数据可以在客户端上实现为字节数组(使用方法Blob.getBytes
)或未解释的字节流(使用方法Blob.getBinaryStream
)。SerialBlob
方法可以将SerialBlob
对象的副本复制为字节数组或流。 它们还可以在Blob
对象中定位给定的字节模式或SerialBlob
对象,并更新或截断Blob
对象。线程安全
SerialBlob不适合多个并发线程使用。 如果要由多个线程使用SerialBlob,则应通过适当的同步来控制对SerialBlob的访问。
- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 SerialBlob(byte[] b)
构造一个SerialBlob
对象,该对象是给定byte
数组的序列化版本。SerialBlob(Blob blob)
构造一个SerialBlob
对象,该对象是给定Blob
对象的序列化版本。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 Object
clone()
返回此SerialBlob
。boolean
equals(Object obj)
将此SerialBlob与指定的对象进行比较。void
free()
此方法释放SerialBlob
对象并释放它所拥有的资源。InputStream
getBinaryStream()
将此SerialBlob
对象作为输入流返回。InputStream
getBinaryStream(long pos, long length)
返回一个InputStream
对象,该对象包含一个部分Blob
值,以pos指定的字节开头,长度为length个字节。byte[]
getBytes(long pos, int length)
将指定位置的指定字节数从此SerialBlob
对象SerialBlob
到另一个字节数组。int
hashCode()
返回此SerialBlob
的哈希码。long
length()
检索此SerialBlob
对象的字节数组中的字节数。long
position(byte[] pattern, long start)
返回此SerialBlob
对象中给定的字节模式开始的位置,从指定位置开始搜索。long
position(Blob pattern, long start)
返回给定Blob
对象开始的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
对象表示的BLOB
值为len
字节长度。
-
-
-
构造方法详细信息
-
SerialBlob
public SerialBlob(byte[] b) throws SerialException, SQLException
构造一个SerialBlob
对象,该对象是给定byte
数组的序列化版本。使用来自
byte
阵列的数据初始化新的SerialBlob
对象,从而允许断开连接的RowSet
对象以建立序列化的Blob
对象而不触及数据源。- 参数
-
b
- 包含要序列化的Blob
对象的数据的byte
数组 - 异常
-
SerialException
- 如果序列化期间发生错误 -
SQLException
- 如果发生SQL错误
-
SerialBlob
public SerialBlob(Blob blob) throws SerialException, SQLException
构造一个SerialBlob
对象,该对象是给定Blob
对象的序列化版本。使用
SerialBlob
对象中的数据初始化新的Blob
对象; 因此,Blob
对象之前应该已将SQLBLOB
值的数据从数据库传输到客户端。 否则,新的SerialBlob
对象将不包含任何数据。- 参数
-
blob
-Blob
构造此SerialBlob
对象的SerialBlob
对象; 不能为空。 - 异常
-
SerialException
- 如果序列化期间发生错误 -
SQLException
-如果Blob
传递给该给此构造是null
。 - 另请参见:
-
Blob
-
-
方法详细信息
-
getBytes
public byte[] getBytes(long pos, int length) throws SerialException
将指定位置的指定字节数从此SerialBlob
对象SerialBlob
到另一个字节数组。请注意,如果要复制的给定字节数大于此
SerialBlob
对象的字节数组的长度,则给定的数字将缩短为数组的长度。- Specified by:
-
getBytes
在界面Blob
- 参数
-
pos
- 要复制的SerialBlob
对象中第一个字节的序号位置; 编号从1
开始; 不得小于1
且且必须小于或等于此SerialBlob
对象的长度 -
length
- 要复制的字节数 - 结果
-
一个字节数组,它是此
SerialBlob
对象的一个区域的副本,从给定位置开始并包含给定数量的连续字节 - 异常
-
SerialException
- 如果给定的起始位置超出范围; 如果之前已在此对象free
- 另请参见:
-
Blob.setBytes(long, byte[])
-
length
public long length() throws SerialException
检索此SerialBlob
对象的字节数组中的字节数。- Specified by:
-
length
in interfaceBlob
- 结果
-
long
表示此SerialBlob
对象的字节数组的字节长度 - 异常
-
SerialException
- 如果发生错误; 如果先前已在此对象上调用了free
-
getBinaryStream
public InputStream getBinaryStream() throws SerialException
将此SerialBlob
对象作为输入流返回。 与相关方法setBinaryStream
不同,无论SerialBlob
是使用Blob
对象还是byte
阵列创建,都会生成流。- Specified by:
-
getBinaryStream
in interfaceBlob
- 结果
-
一个
java.io.InputStream
对象包含此SerialBlob
字节对象的阵列 - 异常
-
SerialException
- 如果发生错误; 如果之前已在此对象free
- 另请参见:
-
setBinaryStream(long)
-
position
public long position(byte[] pattern, long start) throws SerialException, SQLException
返回此SerialBlob
对象中给定的字节模式开始的位置,从指定位置开始搜索。- Specified by:
-
position
in interfaceBlob
- 参数
-
pattern
- 要搜索的字节模式 -
start
- 此SerialBlob
对象中从中开始搜索的字节的位置; 第一个位置是1
; 不得小于1
也不得大于此SerialBlob
对象的长度 - 结果
-
从给定模式开始的
SerialBlob
对象中的位置,从指定位置开始;-1
如果未找到模式或给定的起始位置超出界限; 返回值的位置编号从1
开始 - 异常
-
SerialException
- 如果序列化blob时发生错误; 如果之前已在此对象free
-
SQLException
- 如果从数据库访问BLOB
值时出错
-
position
public long position(Blob pattern, long start) throws SerialException, SQLException
返回给定Blob
对象开始的SerialBlob
对象中的位置,从指定位置开始搜索。- Specified by:
-
position
接口Blob
- 参数
-
pattern
- 要搜索的Blob
对象; -
start
- 此SerialBlob
对象中从中开始搜索的字节的位置; 第一个位置是1
; 不得小于1
也不得大于此SerialBlob
对象的长度 - 结果
-
在这个位置
SerialBlob
对象,其中所述给定Blob
对象开始,开始在指定的位置;-1
如果未找到模式或给定的起始位置超出界限; 返回值的位置编号从1
开始 - 异常
-
SerialException
- 如果序列化blob时发生错误; 如果先前已在此对象上调用了free
-
SQLException
- 如果从数据库访问BLOB
值时出错
-
setBytes
public int setBytes(long pos, byte[] bytes) throws SerialException, SQLException
将给定的字节数组写入此Blob
对象表示的BLOB
值,从位置pos
开始,并返回写入的字节数。- Specified by:
-
setBytes
接口Blob
- 参数
-
pos
- SQLBLOB
值中开始写入的位置。 第一个位置是1
; 不得小于1
也不得大于此SerialBlob
对象的长度。 -
bytes
- 要写入Blob
对象表示的BLOB
值的字节数组 - 结果
- 写入的字节数
- 异常
-
SerialException
- 如果访问BLOB
值时出错; 或者如果设置了无效的职位; 如果设置了无效的偏移值; 如果之前已在此对象free
-
SQLException
- 如果从数据库访问BLOB
值时出错 - 另请参见:
-
getBytes(long, int)
-
setBytes
public int setBytes(long pos, byte[] bytes, int offset, int length) throws SerialException, SQLException
将全部或部分给定的byte
数组写入此Blob
对象表示的BLOB
值,并返回写入的字节数。 写入从位于pos
的BLOB
值开始; 写入来自给定字节数组的len个字节。- Specified by:
-
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)
-
setBinaryStream
public OutputStream setBinaryStream(long pos) throws SerialException, SQLException
检索可用于写入此Blob
对象表示的BLOB
值的流。 该流开始于位置pos
。 此方法转发setBinaryStream()
呼叫到底层Blob
在事件,这SerialBlob
对象被实例化与Blob
。 如果使用byte
阵列实例化此SerialBlob
,则抛出SerialException
。- Specified by:
-
setBinaryStream
in interfaceBlob
- 参数
-
pos
- 开始写入的值在BLOB
值中的位置 - 结果
-
可以写入数据的
java.io.OutputStream
对象 - 异常
-
SQLException
- 如果访问BLOB
值时出错 -
SerialException
- 如果SerialBlob未使用支持setBinaryStream()
的Blob
对象实例化; 如果之前已在此对象free
- 另请参见:
-
getBinaryStream()
-
truncate
public void truncate(long length) throws SerialException
截断此Blob
对象表示的BLOB
值,长度为len
个字节。- Specified by:
-
truncate
,接口Blob
- 参数
-
length
- 应该截断此Blob
对象表示的BLOB
值的长度(以字节为单位) - 异常
-
SerialException
- 如果访问Blob值时出错; 或者截断的长度大于SerialBlob的长度; 如果先前已在此对象上调用了free
-
getBinaryStream
public InputStream getBinaryStream(long pos, long length) throws SQLException
返回一个InputStream
对象,该对象包含部分Blob
值,以pos指定的字节开头,长度为length个字节。- Specified by:
-
getBinaryStream
在接口Blob
- 参数
-
pos
- 要检索的部分值的第一个字节的偏移量。Blob
的第一个字节位于位置1 -
length
- 要检索的部分值的长度(以字节为单位) - 结果
-
InputStream
通过其可以读取部分Blob
值。 - 异常
-
SQLException
- 如果pos小于1或者如果pos大于Blob
的字节数,或者如果pos + length大于Blob
的字节数 -
SerialException
- 如果先前已在此对象上调用了free
方法 - 从以下版本开始:
- 1.6
-
free
public void free() throws SQLException
此方法释放SerialBlob
对象并释放它所拥有的资源。 调用free
方法后,该对象无效。如果
free
被多次调用,在后续调用free
被视为无操作。- Specified by:
-
free
接口Blob
- 异常
-
SQLException
- 如果发生错误,则释放Blob的资源 - 从以下版本开始:
- 1.6
-
equals
public boolean equals(Object obj)
将此SerialBlob与指定的对象进行比较。 当且仅当参数不是null
并且是SerialBlob
对象时,结果为true
,该对象表示与此对象相同的字节序列。- 重写:
-
equals
类Object
- 参数
-
obj
-要比较的对象这个SerialBlob
反对 - 结果
-
true
如果给定的对象表示SerialBlob
相当于此SerialBlob,false
否则 - 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
返回此SerialBlob
的哈希码。- 重写:
-
hashCode
类Object
- 结果
- 此对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
-