- java.lang.Object
-
- javax.sql.rowset.serial.SerialBlob
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
,Blob
public class SerialBlob extends Object implements Blob, Serializable, Cloneable
一个序列化的映射在Java编程语言中的一个SQLBLOB
值。SerialBlob
类提供了一个从Blob
对象创建实例的Blob
函数。 请注意,Blob
对象应该在SerialBlob
构建一个SerialBlob
对象之前将SQLBLOB
值传递给客户端。 一个SQL的数据BLOB
值可以在客户端上以字节(使用方法的阵列Blob.getBytes
)或作为未解释的字节流(使用方法Blob.getBinaryStream
)。SerialBlob
方法可以使SerialBlob
对象的副本作为字节数组或流。 它们还可以在Blob
对象中找到给定的字节模式或SerialBlob
对象,并更新或截断Blob
对象。线程安全
SerialBlob不能安全地被多个并发线程使用。 如果一个SerialBlob要由多个线程使用,则应该通过适当的同步来控制对SerialBlob的访问。
- 从以下版本开始:
- 1.5
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 SerialBlob(byte[] b)
构造一个SerialBlob
对象,它是给定的byte
数组的序列化版本。SerialBlob(Blob blob)
构造一个SerialBlob
对象,它是给定的Blob
对象的序列化版本。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
返回此SerialBlob
的克隆。boolean
equals(Object obj)
将此SerialBlob与指定对象进行比较。void
free()
此方法可以释放SerialBlob
对象并释放它所拥有的资源。InputStream
getBinaryStream()
返回此SerialBlob
对象作为输入流。InputStream
getBinaryStream(long pos, long length)
返回一个包含部分Blob
值的InputStream
对象,从pos指定的字节开始,长度为长度字节。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)
返回此SerialBlob
对象中的位置,给定的Blob
对象开始,开始在指定位置的搜索。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
值。
-
-
-
构造方法详细信息
-
SerialBlob
public SerialBlob(byte[] b) throws SerialException, SQLException
构造一个SerialBlob
对象,它是给定的byte
数组的序列化版本。新的
SerialBlob
对象使用byte
阵列的数据进行初始化,从而允许断开连接的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
目的是要构造; 不能为空。 - 异常
-
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
在接口Blob
- 结果
-
一个
long
表示该SerialBlob
对象的字节数组的字节长度 - 异常
-
SerialException
- 如果发生错误; 如果free
以前曾被调用此对象
-
getBinaryStream
public InputStream getBinaryStream() throws SerialException
返回此SerialBlob
对象作为输入流。 与相关方法setBinaryStream
不同,无论SerialBlob
是用Blob
对象还是byte
数组创建,都会生成流。- Specified by:
-
getBinaryStream
接口Blob
- 结果
-
一个
java.io.InputStream
对象包含此SerialBlob
字节对象的阵列 - 异常
-
SerialException
- 如果发生错误; 如果free
先前已被调用此对象 - 另请参见:
-
setBinaryStream(long)
-
position
public long position(byte[] pattern, long start) throws SerialException, SQLException
返回此SerialBlob
对象中给定字节模式开始的位置,在指定位置开始搜索。- Specified by:
-
position
在接口Blob
- 参数
-
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
返回此SerialBlob
对象中给定的Blob
对象开始的位置,开始在指定位置的搜索。- 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
。 如果这个SerialBlob
被实例化了一个byte
数组,SerialException
抛出一个SerialException
。- Specified by:
-
setBinaryStream
在接口Blob
- 参数
-
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
返回一个包含部分Blob
值的InputStream
对象,从pos指定的字节开始,长度为长度字节。- Specified by:
-
getBinaryStream
在接口Blob
- 参数
-
pos
- 要检索的部分值的第一个字节的偏移量。Blob
的第一个字节在位置1 -
length
- 要检索的部分值的字节长度 - 结果
-
InputStream
可以读取部分Blob
值。 - 异常
-
SQLException
- 如果pos小于1,或者如果pos大于Blob
的字节数,或者如果pos +长度大于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)
-
-