javax.sql.rowset.serial

异常
java.lang.Object
  继承者 javax.sql.rowset.serial.SerialBlob
所有已实现的接口:
Serializable, Cloneable, Blob

public class SerialBlob
     
extends Object
implements Blob, Serializable, Cloneable

SQL BLOB 值在 Java 编程语言中的序列化映射关系。

SerialBlob 类提供一个根据 Blob 对象创建实例的构造方法。注意,在根据 Blob 对象构造 SerialBlob 对象之前,Blob 对象应该已经将 SQL Blob 值的数据置于客户端上。SQL Blob 值的数据可以在客户端上以字节数组(使用 Blob.getBytes 方法)或未解释字节流的形式(使用 Blob.getBinaryStream 方法)实现。

SerialBlob 方法能够以字节数组或流的形式复制 SerialBlob 对象。这些方法还可以在 SerialBlob 对象中查找给定模式的字节或 Blob 对象,并可以更新或截断 Blob 对象。

另请参见:
序列化表格

构造方法摘要
SerialBlob(Blob blob)
          根据给定 Blob 对象的序列化形式构造一个 SerialBlob 对象。
SerialBlob(byte[] b)
          按照给定 byte 数组的序列化形式构造一个 SerialBlob 对象。
 
方法摘要
 void free()
          此方法释放 Blob 对象及其占有的资源。
 InputStream getBinaryStream()
          以输入流的形式返回此 SerialBlob 对象。
 InputStream getBinaryStream(long pos, long length)
          返回一个包含部分 Blob 值的 InputStream 对象,它从 pos 指定的字节开始,具有 length 个字节长度。
 byte[] getBytes(long pos, int length)
          将指定的字节数(从给定位置开始)从此 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 对象表示的 BLOB 值,使其长度为 len 个字节。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SerialBlob

public SerialBlob(byte[] b)
           throws SerialException,
                  SQLException
按照给定 byte 数组的序列化形式构造一个 SerialBlob 对象。

新的 SerialBlob 对象使用 byte 数组中的数据进行初始化,因此允许未连接 RowSet 对象无需接触数据源即可建立序列化的 Blob 对象。

参数:
b - 一个 byte 数组,包含要序列化的 Blob 对象的数据
抛出:
SerialException - 如果在序列化期间发生错误
SQLException - 如果发生 SQL 错误

SerialBlob

public SerialBlob(Blob blob)
           throws SerialException,
                  SQLException
根据给定 Blob 对象的序列化形式构造一个 SerialBlob 对象。

新的 SerialBlob 对象使用 Blob 对象中的数据进行初始化;因此,Blob 对象应该预先从数据库将 SQL BLOB 值的数据置于客户端上。否则,新 SerialBlob 对象将不包含任何数据。

参数:
blob - 一个 Blob 对象,根据该对象构造此 SerialBlob 对象 ;此值不能为 null。
抛出:
SerialException - 如果在序列化期间发生错误
SQLException - 如果传递给此构造方法的 Blobnull
另请参见:
Blob
方法详细信息

getBytes

public byte[] getBytes(long pos,
                       int length)
                throws SerialException
将指定的字节数(从给定位置开始)从此 SerialBlob 对象复制到另一个字节数组。

注意,如果要复制的给定字节数大于此 SerialBlob 对象的字节数组的长度,则将其缩短为该数组的长度。

指定者:
接口 Blob 中的 getBytes
参数:
pos - 此 SerialBlob 对象中要复制的第一个字节的顺序位置;编号从 1 开始;不得小于 1 并且必须小于或等于此 SerialBlob 对象的长度
length - 要复制的字节数
返回:
一个字节数组,它是此 SerialBlob 对象一个区域的副本,从给定位置开始并且包含给定的连续字节数
抛出:
SerialException - 如果给定开始位置超出限制
另请参见:
Blob.setBytes(long, byte[])

length

public long length()
            throws SerialException
获取此 SerialBlob 对象字节数组中的字节数。

指定者:
接口 Blob 中的 length
返回:
一个 long 值,指示此 SerialBlob 对象的字节数组的长度(以字节为单位)
抛出:
SerialException - 如果发生错误

getBinaryStream

public InputStream getBinaryStream()
                            throws SerialException
以输入流的形式返回此 SerialBlob 对象。与相关方法 setBinaryStream 不同的是,无论 SerialBlob 是使用 Blob 对象还是使用 byte 数组创建的,都将生成流。

指定者:
接口 Blob 中的 getBinaryStream
返回:
包含此 SerialBlob 对象字节数组的 java.io.InputStream 对象
抛出:
SerialException - 如果发生错误
另请参见:
setBinaryStream(long)

position

public long position(byte[] pattern,
                     long start)
              throws SerialException,
                     SQLException
返回在此 SerialBlob 对象中给定模式的字节开始的位置,搜索从指定的位置开始。

指定者:
接口 Blob 中的 position
参数:
pattern - 要搜索的字节模式
start - 此 SerialBlob 对象中字节的位置,搜索从该位置开始;第一个位置是 1;不得小于 1 且不得大于此 SerialBlob 对象的长度
返回:
SerialBlob 对象中给定模式开始的位置,从指定位置开始;如果找不到模式或者给定开始位置超出限制,则返回 -1;返回值的位置编号从 1 开始
抛出:
SerialException - 如果在序列化 blob 时发生错误
SQLException - 如果在从数据库访问 BLOB 值时发生错误

position

public long position(Blob pattern,
                     long start)
              throws SerialException,
                     SQLException
返回此 SerialBlob 对象中给定 Blob 对象开始的位置,搜索从指定位置开始。

指定者:
接口 Blob 中的 position
参数:
pattern - 进行搜索的 Blob 对象;
start - 在此 SerialBlob 对象中开始搜索的字节的位置;第一个位置是 1;不得小于 1 且不得大于此 SerialBlob 对象的长度
返回:
在此 SerialBlob 对象中给定 Blob 对象开始的位置,从指定位置开始;如果找不到模式或者给定开始位置超出限制,则返回 -1;返回值的位置编号从 1 开始
抛出:
SerialException - 如果在序列化 blob 时发生错误
SQLException - 如果在从数据库访问 BLOB 值时发生错误

setBytes

public int setBytes(long pos,
                    byte[] bytes)
             throws SerialException,
                    SQLException
将给定字节数组写入此 Blob 对象表示的 BLOB 值(从位置 pos 处开始),并返回写入的字节数。

指定者:
接口 Blob 中的 setBytes
参数:
pos - SQL BLOB 值中开始写入的位置。第一个位置是 1;不得小于 1 且不得大于此 SerialBlob 对象的长度。
bytes - 要写入此 Blob 对象所表示的 BLOB 值的字节数组
返回:
写入的字节数
抛出:
SerialException - 如果在访问 BLOB 值时发生错误;如果设置了无效的位置;如果设置了无效的偏移量值
SQLException - 如果从数据库访问 BLOB 值时发生错误
另请参见:
getBytes(long, int)

setBytes

public int setBytes(long pos,
                    byte[] bytes,
                    int offset,
                    int length)
             throws SerialException,
                    SQLException
将所有或部分给定的 byte 数组写入此 Blob 对象表示的 BLOB 值中,并返回写入的字节数。写入操作从 BLOB 值中的位置 pos 处开始;写入给定字节数组中的 len 个字节。

指定者:
接口 Blob 中的 setBytes
参数:
pos - SQL BLOB 对象中开始写入的位置。第一个位置是 1;不得小于 1 且不得大于此 SerialBlob 对象的长度。
bytes - 要写入 BLOB 值的字节数组
offset - byte 数组中的偏移量,从该偏移量开始读取字节。第一个偏移量位置是 0;不得小于 0 且不得大于 byte 数组的长度
length - 要从 bytes 字节数组写入 BLOB 值的字节数。
返回:
写入的字节数
抛出:
SerialException - 如果在访问 BLOB 值时发生错误;如果设置了无效的位置;如果设置了无效的偏移量值;如果要写入的字节数大于 SerialBlob 长度;如果长度和偏移量的组合值大于 Blob 缓冲区
SQLException - 如果在从数据库访问 BLOB 值时发生错误。
另请参见:
getBytes(long, int)

setBinaryStream

public OutputStream setBinaryStream(long pos)
                             throws SerialException,
                                    SQLException
获取用于写入此 Blob 对象所表示的 BLOB 值的流。该流从位置 pos 处开始。如果此 SerialBlob 对象是使用 Blob 进行实例化的,则此方法将 setBinaryStream() 调用转发到底层 Blob。如果此 SerialBlob 是使用 byte 数组进行实例化的,则抛出 SerialException

指定者:
接口 Blob 中的 setBinaryStream
参数:
pos - BLOB 值中开始进行写入操作的位置
返回:
可以写入数据的 java.io.OutputStream 对象
抛出:
SQLException - 如果访问 BLOB 值时发生错误
SerialException - 如果 SerialBlob 不是使用支持 setBinaryStream()Blob 对象进行实例化的
从以下版本开始:
1.4
另请参见:
getBinaryStream()

truncate

public void truncate(long length)
              throws SerialException
截取此 Blob 对象表示的 BLOB 值,使其长度为 len 个字节。

指定者:
接口 Blob 中的 truncate
参数:
length - 此 Blob 对象表示的 BLOB 值截取后的长度(以字节为单位)
抛出:
SerialException - 如果在访问 Blob 值时发生错误,或者要截取的长度大于 SerialBlob 长度

getBinaryStream

public InputStream getBinaryStream(long pos,
                                   long length)
                            throws SQLException
返回一个包含部分 Blob 值的 InputStream 对象,它从 pos 指定的字节开始,具有 length 个字节长度。

指定者:
接口 Blob 中的 getBinaryStream
参数:
pos - 要获取的部分值的第一个字节的偏移量。 Blob 的第一个字节位于位置 1。
length - 要获取的部分值的字节长度
返回:
通过其可以读取部分 Blob 值的 InputStream
抛出:
SQLException - 如果 pos 小于 1,pos 大于 Blob 的字节数,或者 pos + length 大于 Blob 的字节数
从以下版本开始:
1.6

free

public void free()
          throws SQLException
此方法释放 Blob 对象及其占有的资源。调用 free 方法后,该对象将无效。如果多次调用了 free 方法,则对 free 的后续调用将被视为无操作 (no-op)。

指定者:
接口 Blob 中的 free
抛出:
SQLException - 如果释放 Blob 的资源时发生错误
从以下版本开始:
1.6