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
ConstructorsConstructorDescriptionSerialBlob(byte[] b) 构造一个SerialBlob对象,它是给定byte数组的序列化版本。SerialBlob(Blob blob) 构造一个SerialBlob对象,它是给定Blob对象的序列化版本。 -
Method Summary
Modifier and TypeMethodDescriptionclone()返回此SerialBlob的克隆。boolean将此SerialBlob与指定对象进行比较。voidfree()该方法释放SerialBlob对象并释放其持有的资源。返回此SerialBlob对象作为输入流。getBinaryStream(long pos, long length) 返回一个InputStream对象,其中包含一个部分Blob值,从指定位置pos开始,长度为length字节。byte[]getBytes(long pos, int length) 从此SerialBlob对象的给定位置开始,复制指定数量的字节到另一个字节数组。inthashCode()返回此SerialBlob的哈希码。longlength()检索此SerialBlob对象字节数组中的字节数。longposition(byte[] pattern, long start) 返回此SerialBlob对象中给定字节模式开始的位置,从指定位置开始搜索。long返回此SerialBlob对象中给定Blob对象开始的位置,从指定位置开始搜索。setBinaryStream(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对象表示的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- 从要设置的字节开始读取字节的数组bytes中的偏移量。第一个偏移位置是0; 必须不小于0且不大于字节数组bytes的长度 -
length- 从字节数组bytes中写入BLOB值的字节数 - 返回:
- 写入的字节数
- 抛出:
-
SerialException- 如果访问BLOB值时出现错误; 如果设置了无效位置; 如果设置了无效偏移值; 或者length和offset的组合值大于bytes的长度; 如果此对象之前已调用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。
-