模块  java.sql.rowset

Class SerialBlob

  • 实现的所有接口
    SerializableCloneableBlob

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

    SerialBlob类提供了一个用于从Blob对象创建实例的Blob函数。 需要注意的是Blob对象应该已经将SQL BLOB一个前值的数据置于客户端SerialBlob对象从它建造。 SQL BLOB值的数据可以在客户端上实现为字节数组(使用方法Blob.getBytes )或未解释的字节流(使用方法Blob.getBinaryStream )。

    SerialBlob方法可以将SerialBlob对象的副本复制为字节数组或流。 它们还可以在Blob对象中定位给定的字节模式或SerialBlob对象,并更新或截断Blob对象。

    线程安全

    SerialBlob不适合多个并发线程使用。 如果要由多个线程使用SerialBlob,则应通过适当的同步来控制对SerialBlob的访问。

    从以下版本开始:
    1.5
    另请参见:
    Serialized Form
    • 构造方法摘要

      构造方法  
      构造器 描述
      SerialBlob​(byte[] b)
      构造一个 SerialBlob对象,该对象是给定 byte数组的序列化版本。
      SerialBlob​(Blob blob)
      构造一个 SerialBlob对象,该对象是给定 Blob对象的序列化版本。
    • 方法摘要

      所有方法  实例方法 具体的方法 
      变量和类型 方法 描述
      Object clone()
      返回此 SerialBlob
      boolean equals​(Object obj)
      将此SerialBlob与指定的对象进行比较。
      void free()
      此方法释放 SerialBlob对象并释放它所拥有的资源。
      InputStream getBinaryStream()
      将此 SerialBlob对象作为输入流返回。
      InputStream getBinaryStream​(long pos, long length)
      返回一个 InputStream对象,该对象包含一个部分 Blob值,以pos指定的字节开头,长度为length个字节。
      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)
      返回给定 Blob对象开始的 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字节长度。
    • 构造方法详细信息

      • SerialBlob

        public SerialBlob​(byte[] b)
                   throws SerialException,
                          SQLException
        构造一个SerialBlob对象,该对象是给定byte数组的序列化版本。

        使用来自byte阵列的数据初始化新的SerialBlob对象,从而允许断开连接的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对象的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 in interface Blob
        结果
        long表示此 SerialBlob对象的字节数组的字节长度
        异常
        SerialException - 如果发生错误; 如果先前已在此对象上调用了free
      • getBinaryStream

        public InputStream getBinaryStream()
                                    throws SerialException
        将此SerialBlob对象作为输入流返回。 与相关方法setBinaryStream不同,无论SerialBlob是使用Blob对象还是byte阵列创建,都会生成流。
        Specified by:
        getBinaryStream in interface Blob
        结果
        一个 java.io.InputStream对象包含此 SerialBlob字节对象的阵列
        异常
        SerialException - 如果发生错误; 如果之前已在此对象free
        另请参见:
        setBinaryStream(long)
      • position

        public long position​(byte[] pattern,
                             long start)
                      throws SerialException,
                             SQLException
        返回此 SerialBlob对象中给定的字节模式开始的位置,从指定位置开始搜索。
        Specified by:
        position in interface 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
        返回给定 Blob对象开始的 SerialBlob对象中的位置,从指定位置开始搜索。
        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 如果使用byte阵列实例化此SerialBlob ,则抛出SerialException
        Specified by:
        setBinaryStream in interface 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
        返回一个 InputStream对象,该对象包含部分 Blob值,以pos指定的字节开头,长度为length个字节。
        Specified by:
        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被视为无操作。

        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