Module  java.sql.rowset

Class SerialBlob

  • All Implemented Interfaces:
    SerializableCloneableBlob


    public class SerialBlob
    extends Object
    implements Blob, Serializable, Cloneable
    一个序列化的映射在Java编程语言中的一个SQL BLOB值。

    SerialBlob类提供了一个从Blob对象创建实例的Blob函数。 请注意, Blob对象应该在SerialBlob构建一个SerialBlob对象之前将SQL BLOB值传递给客户端。 一个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对象之前应该已经从数据库将SQL BLOB的数据提交给客户端。 否则,新的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 - SQL BLOB值的起始位置。 第一名是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值,并返回写入的字节数。 写作部分起始于posBLOB值; 写入来自给定字节数组的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
        重写:
        equalsObject
        参数
        obj - 对比这个 SerialBlob的对象
        结果
        true如果给定的对象表示一个 SerialBlob相当于此SerialBlob, false否则
        另请参见:
        Object.hashCode()HashMap
      • clone

        public Object clone​()
        返回此SerialBlob的克隆。 该副本将包含对内部字节数组的克隆的引用,而不是对该SerialBlob对象的原始内部字节数组的SerialBlob 底层的Blob对象将被设置为null。
        重写:
        cloneObject
        结果
        这个SerialBlob的一个克隆
        另请参见:
        Cloneable