Module java.sql
Package java.sql

Interface Blob

所有已知的实现类:
SerialBlob

public interface Blob
Java编程语言中SQL BLOB值的表示(映射)。SQL BLOB是一个内置类型,将二进制大对象作为数据库表中行的列值存储。默认情况下,驱动程序使用SQL locator(BLOB)来实现Blob,这意味着Blob对象包含对SQL BLOB数据的逻辑指针,而不是数据本身。 Blob对象在创建它的事务期间是有效的。

接口ResultSetCallableStatementPreparedStatement中的方法,如getBlobsetBlob,允许程序员访问SQL BLOB值。 Blob接口提供了获取SQL BLOB(二进制大对象)值长度的方法,在客户端实现BLOB值的方法,以及确定BLOB值中字节模式位置的方法。此外,此接口还具有更新BLOB值的方法。

如果JDBC驱动程序支持数据类型,则Blob接口上的所有方法必须完全实现。

自版本:
1.2
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    free()
    该方法释放Blob对象并释放其持有的资源。
    检索由此Blob实例指定的BLOB值作为流。
    getBinaryStream(long pos, long length)
    返回一个InputStream对象,其中包含一个部分BLOB值,从指定的字节位置pos开始,长度为length字节。
    byte[]
    getBytes(long pos, int length)
    检索此Blob对象表示的BLOB值的全部或部分,作为字节数组。
    long
    length()
    返回由此Blob对象指定的BLOB值中的字节数。
    long
    position(byte[] pattern, long start)
    检索此Blob对象表示的BLOB值中指定字节数组pattern开始的字节位置。
    long
    position(Blob pattern, long start)
    检索由此Blob对象指定的BLOB值中pattern开始的字节位置。
    setBinaryStream(long pos)
    检索可用于写入此Blob对象表示的BLOB值的流。
    int
    setBytes(long pos, byte[] bytes)
    将给定的字节数组写入此Blob对象表示的BLOB值,从位置pos开始,并返回写入的字节数。
    int
    setBytes(long pos, byte[] bytes, int offset, int len)
    将给定的byte数组的全部或部分写入此Blob对象表示的BLOB值,并返回写入的字节数。
    void
    truncate(long len)
    将此Blob对象表示的BLOB值截断为长度为len字节。
  • Method Details

    • length

      long length() throws SQLException
      返回由此Blob对象指定的BLOB值中的字节数。
      返回:
      BLOB的字节长度
      抛出:
      SQLException - 如果访问BLOB的长度时出现错误
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.2
    • getBytes

      byte[] getBytes(long pos, int length) throws SQLException
      检索此Blob对象表示的BLOB值的全部或部分,作为字节数组。此byte数组包含从位置pos开始的最多length个连续字节。
      参数:
      pos - 要提取的BLOB值中第一个字节的序数位置;第一个字节位于位置1
      length - 要复制的连续字节数;length的值必须为0或更大
      返回:
      包含由此Blob对象指定的BLOB值中最多length个连续字节的字节数组,从位置pos开始
      抛出:
      SQLException - 如果访问BLOB值时出现错误;如果pos小于1或length小于0
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.2
      参见:
    • getBinaryStream

      InputStream getBinaryStream() throws SQLException
      检索由此Blob实例指定的BLOB值作为流。
      返回:
      包含BLOB数据的流
      抛出:
      SQLException - 如果访问BLOB值时出现错误
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.2
      参见:
    • position

      long position(byte[] pattern, long start) throws SQLException
      检索此Blob对象表示的BLOB值中指定字节数组pattern开始的字节位置。从位置start开始搜索pattern
      参数:
      pattern - 要搜索的字节数组
      start - 开始搜索的位置;第一个位置为1
      返回:
      出现模式的位置,否则为-1
      抛出:
      SQLException - 如果访问BLOB或start小于1时出现错误
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.2
    • position

      long position(Blob pattern, long start) throws SQLException
      检索此Blob对象表示的BLOB值中pattern开始的字节位置。搜索从位置start开始。
      参数:
      pattern - 指定要搜索的BLOB值的Blob对象
      start - 开始搜索的BLOB值中的位置;第一个位置为1
      返回:
      模式开始的位置,否则为-1
      抛出:
      SQLException - 如果访问BLOB值或start小于1时出现错误
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.2
    • setBytes

      int setBytes(long pos, byte[] bytes) throws SQLException
      将给定的字节数组写入此Blob对象表示的BLOB值,从位置pos开始,并返回写入的字节数。字节数组将覆盖Blob对象中从位置pos开始的现有字节。如果在写入字节数组时达到BLOB值的末尾,则BLOB值的长度将增加以容纳额外的字节。

      注意: 如果为pos指定的值大于BLOB值的长度+1,则行为是未定义的。一些JDBC驱动程序可能会抛出SQLException,而其他驱动程序可能支持此操作。

      参数:
      pos - 开始写入的BLOB对象中的位置;第一个位置为1
      bytes - 要写入此Blob对象表示的BLOB值的字节数组
      返回:
      写入的字节数
      抛出:
      SQLException - 如果访问BLOB值时出现错误或pos小于1
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.4
      参见:
    • setBytes

      int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException
      将给定的byte数组的全部或部分写入此Blob对象表示的BLOB值,并返回写入的字节数。从BLOB值中的位置pos开始写入;从给定字节数组中写入len字节。字节数组将覆盖Blob对象中从位置pos开始的现有字节。如果在写入字节数组时达到BLOB值的末尾,则BLOB值的长度将增加以容纳额外的字节。

      注意: 如果为pos指定的值大于BLOB值的长度+1,则行为是未定义的。一些JDBC驱动程序可能会抛出SQLException,而其他驱动程序可能支持此操作。

      参数:
      pos - 在写入时BLOB对象中的位置;第一个位置为1
      bytes - 要写入此BLOB对象的字节数组
      offset - 在数组bytes中开始读取要设置的字节的偏移量
      len - 要从字节数组bytes写入BLOB值的字节数
      返回:
      写入的字节数
      抛出:
      SQLException - 如果访问BLOB值时出现错误,或者pos小于1
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.4
      参见:
    • setBinaryStream

      OutputStream setBinaryStream(long pos) throws SQLException
      检索一个流,可用于写入此Blob对象表示的BLOB值。流从位置pos开始。写入流的字节将覆盖Blob对象中从位置pos开始的现有字节。如果在向流写入时达到Blob值的末尾,则Blob值的长度将增加以容纳额外的字节。

      注意: 如果为pos指定的值大于BLOB值的长度+1,则行为是未定义的。一些JDBC驱动程序可能会抛出SQLException,而其他驱动程序可能支持此操作。

      参数:
      pos - 在写入时BLOB值中的位置;第一个位置为1
      返回:
      可写入数据的java.io.OutputStream对象
      抛出:
      SQLException - 如果访问BLOB值时出现错误,或者pos小于1
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.4
      参见:
    • truncate

      void truncate(long len) throws SQLException
      将此Blob对象表示的BLOB值截断为len字节的长度。

      注意: 如果为pos指定的值大于BLOB值的长度+1,则行为是未定义的。一些JDBC驱动程序可能会抛出SQLException,而其他驱动程序可能支持此操作。

      参数:
      len - 要截断为的字节数,即此Blob对象表示的BLOB
      抛出:
      SQLException - 如果访问BLOB值时出现错误,或者len小于0
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.4
    • free

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

      在调用free后,任何尝试调用free以外的方法都将导致抛出SQLException。如果多次调用free,则后续调用free将被视为无操作。

      抛出:
      SQLException - 如果释放Blob的资源时发生错误
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.6
    • getBinaryStream

      InputStream getBinaryStream(long pos, long length) throws SQLException
      返回一个包含部分Blob值的InputStream对象,从指定的位置pos开始,长度为length字节。
      参数:
      pos - 要检索的部分值的第一个字节的偏移量。 Blob中的第一个字节位于位置1。
      length - 要检索的部分值的字节数
      返回:
      可读取部分Blob值的InputStream
      抛出:
      SQLException - 如果pos小于1,或者pos大于Blob中的字节数,或者pos + length大于Blob中的字节数
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.6