Module java.sql.rowset

Class SerialBlob

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

public class SerialBlob extends Object implements Blob, Serializable, Cloneable
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

    Constructors
    Constructor
    Description
    SerialBlob(byte[] b)
    构造一个SerialBlob对象,它是给定byte数组的序列化版本。
    SerialBlob(Blob blob)
    构造一个SerialBlob对象,它是给定Blob对象的序列化版本。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    返回此SerialBlob的克隆。
    boolean
    equals(Object obj)
    将此SerialBlob与指定对象进行比较。
    void
    free()
    该方法释放SerialBlob对象并释放其持有的资源。
    返回此SerialBlob对象作为输入流。
    getBinaryStream(long pos, long length)
    返回一个InputStream对象,其中包含一个部分Blob值,从指定位置pos开始,长度为length字节。
    byte[]
    getBytes(long pos, int length)
    从此SerialBlob对象的给定位置开始,复制指定数量的字节到另一个字节数组。
    int
    返回此SerialBlob的哈希码。
    long
    length()
    检索此SerialBlob对象字节数组中的字节数。
    long
    position(byte[] pattern, long start)
    返回此SerialBlob对象中给定字节模式开始的位置,从指定位置开始搜索。
    long
    position(Blob pattern, long start)
    返回此SerialBlob对象中给定Blob对象开始的位置,从指定位置开始搜索。
    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字节。

    Methods declared in class java.lang.Object

    finalize, getClass, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • 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对象应该先将SQL BLOB值的数据从数据库传输到客户端。否则,新的SerialBlob对象将不包含任何数据。

      参数:
      blob - 用于构造此SerialBlob对象的Blob对象;不能为null。
      抛出:
      SerialException - 如果在序列化过程中发生错误
      SQLException - 如果传递给此构造函数的Blobnull
      参见:
  • Method Details

    • getBytes

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

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

      指定者:
      getBytes 在接口 Blob
      参数:
      pos - 要复制的第一个字节在此SerialBlob对象中的序数位置;编号从1开始;必须不小于1且必须小于或等于此SerialBlob对象的长度
      length - 要复制的字节数
      返回:
      一个字节数组,是从此SerialBlob对象的给定位置开始,包含给定数量连续字节的副本
      抛出:
      SerialException - 如果给定的起始位置超出范围;如果此对象之前已调用free
      参见:
    • length

      public long length() throws SerialException
      检索此SerialBlob对象字节数组中的字节数。
      指定者:
      length 在接口 Blob
      返回:
      一个long,指示此SerialBlob对象字节数组的长度
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
    • getBinaryStream

      public InputStream getBinaryStream() throws SerialException
      返回此SerialBlob对象作为输入流。与相关方法setBinaryStream不同,无论SerialBlob是使用Blob对象还是byte数组创建的,都会生成一个流。
      指定者:
      getBinaryStream 在接口 Blob
      返回:
      一个包含此SerialBlob对象字节数组的java.io.InputStream对象
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
      参见:
    • position

      public long position(byte[] pattern, long start) throws SerialException, SQLException
      返回此SerialBlob对象中给定字节模式开始的位置,从指定位置开始搜索。
      指定者:
      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对象开始的位置,从指定位置开始搜索。
      指定者:
      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开始,并返回写入的字节数。
      指定者:
      setBytes 在接口 Blob
      参数:
      pos - 要开始写入的SQL BLOB值的位置。第一个位置是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值时出现错误; 如果设置了无效位置; 如果设置了无效偏移值; 或者lengthoffset的组合值大于bytes的长度; 如果此对象之前已调用free
      SQLException - 如果访问数据库中的BLOB值时出现错误。
      参见:
    • setBinaryStream

      public OutputStream setBinaryStream(long pos) throws SerialException, SQLException
      检索一个流,可用于写入此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

      public void truncate(long length) throws SerialException
      将此Blob对象表示的BLOB值截断为len字节长度。
      指定者:
      truncate 在接口 Blob
      参数:
      length - 要将此Blob对象表示的BLOB值截断为的字节长度
      抛出:
      SerialException - 如果访问Blob值时出现错误; 或者要截断的长度大于SerialBlob长度; 如果此对象之前已调用free
    • getBinaryStream

      public InputStream getBinaryStream(long pos, long length) throws SQLException
      返回一个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

      public void free() throws SQLException
      该方法释放SerialBlob对象并释放其持有的资源。一旦调用free方法,对象就无效了。

      如果多次调用free,则后续调用free将被视为无操作。

      指定者:
      free 在接口 Blob
      抛出:
      SQLException - 如果释放Blob的资源时发生错误
      自:
      1.6
    • equals

      public boolean equals(Object obj)
      将此SerialBlob与指定对象进行比较。仅当参数不为null且为表示与此对象相同字节序列的SerialBlob对象时,结果为true
      覆盖:
      equals 在类 Object
      参数:
      obj - 要与此SerialBlob进行比较的对象
      返回:
      如果给定对象表示与此SerialBlob等效的SerialBlob,则返回true,否则返回false
      参见:
    • hashCode

      public int hashCode()
      返回此SerialBlob的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      该对象的哈希码值。
      参见:
    • clone

      public Object clone()
      返回此SerialBlob的克隆。复制品将包含对内部字节数组的克隆的引用,而不是对此SerialBlob对象的原始内部字节数组的引用。底层的Blob对象将被设置为null。
      覆盖:
      clone 在类 Object
      返回:
      此SerialBlob的克隆
      参见: