- 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 方法 描述 Objectclone()返回此SerialBlob的克隆。booleanequals(Object obj)将此SerialBlob与指定对象进行比较。voidfree()此方法可以释放SerialBlob对象并释放它所拥有的资源。InputStreamgetBinaryStream()返回此SerialBlob对象作为输入流。InputStreamgetBinaryStream(long pos, long length)返回一个包含部分Blob值的InputStream对象,从pos指定的字节开始,长度为长度字节。byte[]getBytes(long pos, int length)将从给定位置开始的指定数量的字节从该SerialBlob对象SerialBlob到另一个字节数组。inthashCode()返回此SerialBlob的哈希码。longlength()检索此SerialBlob对象的字节数组中的字节数。longposition(byte[] pattern, long start)返回此SerialBlob对象中给定字节模式开始的位置,在指定位置开始搜索。longposition(Blob pattern, long start)返回此SerialBlob对象中的位置,给定的Blob对象开始,开始在指定位置的搜索。OutputStreamsetBinaryStream(long pos)检索可用于写入此Blob对象所代表的值的BLOB的流。intsetBytes(long pos, byte[] bytes)将给定的字节数组写入Blob对象表示的BLOB值,从位置pos开始,并返回写入的字节数。intsetBytes(long pos, byte[] bytes, int offset, int length)将给定的byte数组的全部或部分写入Blob对象表示的BLOB值,并返回写入的字节数。voidtruncate(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)
-
-