Module java.sql.rowset

Class SerialArray

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

public class SerialArray extends Object implements Array, Serializable, Cloneable
一个Array对象的序列化版本,它是Java编程语言中SQL ARRAY值的映射。

SerialArray类提供了一个构造函数,用于从Array对象创建一个SerialArray实例,以及用于获取基本类型和基本类型的SQL名称的方法,以及用于复制SerialArray对象的所有或部分元素的方法。

注意: 为了使这个类能够正确运行,必须在需要时提供到数据源的连接,以便将SQL Array对象实例化(将其所有元素传输到客户端服务器)。目前,不支持数据源中数据的逻辑指针,如定位器。

线程安全性

SerialArray不适合多个并发线程使用。如果一个SerialArray要被多个线程使用,则应通过适当的同步来控制对SerialArray的访问。
自从:
1.5
参见:
  • Constructor Summary

    Constructors
    Constructor
    Description
    SerialArray(Array array)
    构造一个新的SerialArray对象,从给定的Array对象。
    SerialArray(Array array, Map<String,Class<?>> map)
    从给定的Array对象构造一个新的SerialArray对象,当元素为SQL UDT时,使用给定的类型映射进行自定义映射。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    返回此SerialArray的克隆。
    boolean
    equals(Object obj)
    将此SerialArray与指定对象进行比较。
    void
    free()
    此方法释放SerialArray对象并释放它所持有的资源。
    返回一个新数组,它是此SerialArray对象的副本。
    getArray(long index, int count)
    返回一个新数组,它是此SerialArray对象的切片副本,从给定索引处的元素开始,包含给定数量的连续元素。
    getArray(long index, int count, Map<String,Class<?>> map)
    返回一个新数组,它是此SerialArray对象的切片副本,从给定索引处的元素开始,包含给定数量的连续元素。
    getArray(Map<String,Class<?>> map)
    返回一个新数组,它是此SerialArray对象的副本,当元素为SQL UDT时,使用给定的类型映射进行自定义映射。
    int
    检索此SerialArray对象中元素的SQL类型。
    检索此SerialArray对象中元素的特定于DBMS的类型名称。
    检索一个ResultSet对象,其中包含此SerialArray对象表示的ARRAY值的所有元素。
    getResultSet(long index, int count)
    检索一个ResultSet对象,其中包含从索引index开始的子数组的元素,包含最多count个连续元素。
    getResultSet(long index, int count, Map<String,Class<?>> map)
    检索一个ResultSet对象,其中包含此SerialArray对象中元素的子数组的元素,从索引index开始,包含最多count个连续元素。
    检索一个ResultSet对象,其中包含此SerialArray对象表示的SQL ARRAY值的所有元素。
    int
    返回此SerialArray的哈希码。

    Methods declared in class java.lang.Object

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

    • SerialArray

      public SerialArray(Array array, Map<String,Class<?>> map) throws SerialException, SQLException
      从给定的Array对象构造一个新的SerialArray对象,当元素为SQL UDT时,使用给定的类型映射进行自定义映射。

      如果数组元素是UDT并且给定的类型映射中有该UDT的条目,则此方法执行自定义映射。自定义映射是递归的,这意味着,例如,SQL结构化类型的元素是一个SQL结构化类型,它本身有一个元素是一个SQL结构化类型,每个具有自定义映射的结构化类型将根据给定的类型映射进行映射。

      新的SerialArray对象包含与构建它的Array对象相同的元素,除非基本类型是SQL类型STRUCTARRAYBLOBCLOBDATALINKJAVA_OBJECT。在这种情况下,新的SerialArray对象中的每个元素都是适当的序列化形式,即SerialStructSerialArraySerialBlobSerialClobSerialDatalinkSerialJavaObject对象。

      注意: (1) 从创建SerialArray对象的Array对象在传递给构造函数之前,必须在客户端上实例化SQL ARRAY值的数据。否则,新的SerialArray对象将不包含任何数据。

      注意: (2) 如果Array包含java.sql.Types.JAVA_OBJECT类型,则将调用SerialJavaObject构造函数,其中将检查以确保此对象是可序列化的。

      注意: (3) 提供给此构造函数的Array对象不能对任何Array.getArray()方法返回nullSerialArray不能序列化空数组值。

      参数:
      array - 要序列化的Array对象
      map - 一个java.util.Map对象,其中每个条目包括1)给出UDT(SQL结构化类型或不同类型)的完全限定名称的String对象和2)定义UDT如何映射的SQLData实现的Class对象。对于BlobClobDATALINKJAVA_OBJECT类型,map参数没有任何效果。
      抛出:
      SerialException - 如果在序列化Array对象时发生错误
      SQLException - 如果发生数据库访问错误或arraymap值为null
    • SerialArray

      public SerialArray(Array array) throws SerialException, SQLException
      从给定的Array对象构造一个新的SerialArray对象。

      此构造函数不执行自定义映射。如果数组的基本类型是SQL结构化类型并且需要自定义映射,则应使用构造函数SerialArray(Array array, Map map)

      新的SerialArray对象包含与构建它的Array对象相同的元素,除非基本类型是SQL类型BLOBCLOBDATALINKJAVA_OBJECT。在这种情况下,新的SerialArray对象中的每个元素都是适当的序列化形式,即SerialBlobSerialClobSerialDatalinkSerialJavaObject对象。

      注意: (1) 从创建SerialArray对象的Array对象在传递给构造函数之前,必须在客户端上实例化SQL ARRAY值的数据。否则,新的SerialArray对象将不包含任何数据。

      注意: (2) 提供给此构造函数的Array对象不能对任何Array.getArray()方法返回nullSerialArray不能序列化null数组值。

      参数:
      array - 要序列化的Array对象
      抛出:
      SerialException - 如果在序列化Array对象时发生错误
      SQLException - 如果发生数据库访问错误或array参数为null
  • Method Details

    • free

      public void free() throws SQLException
      此方法释放SerialArray对象并释放它所持有的资源。一旦调用free方法,对象就无效。

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

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

      public Object getArray() throws SerialException
      返回一个新数组,它是此SerialArray对象的副本。
      指定者:
      getArray 在接口 Array
      返回:
      作为Java编程语言中的Object的此SerialArray对象的副本
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
    • getArray

      public Object getArray(Map<String,Class<?>> map) throws SerialException
      返回一个新数组,它是此SerialArray对象的副本,当元素为SQL UDT时,使用给定的类型映射进行自定义映射。

      如果数组元素是UDT并且给定的类型映射中有该UDT的条目,则此方法执行自定义映射。自定义映射是递归的,这意味着,例如,SQL结构化类型的元素是一个SQL结构化类型,它本身有一个元素是一个SQL结构化类型,每个具有自定义映射的结构化类型将根据给定的类型映射进行映射。

      指定者:
      getArray 在接口 Array
      参数:
      map - 一个java.util.Map对象,其中每个条目包括1)给出UDT的完全限定名称的String对象和2)定义UDT如何映射的SQLData实现的Class对象
      返回值:
      作为Java编程语言中的Object的此SerialArray对象的副本
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
    • getArray

      public Object getArray(long index, int count) throws SerialException
      返回一个新数组,该数组是此SerialArray对象的一个切片的副本,从给定索引处的元素开始,并包含给定数量的连续元素。
      指定者:
      getArray 在接口 Array
      参数:
      index - 要复制的第一个元素在此SerialArray对象中的索引;数组中第一个元素的索引为0
      count - 要复制的连续元素的数量,从给定索引开始
      返回值:
      作为Java编程语言中的Object的此SerialArray对象中指定元素的副本
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
    • getArray

      public Object getArray(long index, int count, Map<String,Class<?>> map) throws SerialException
      返回一个新数组,该数组是此SerialArray对象的一个切片的副本,从给定索引处的元素开始,并包含给定数量的连续元素。

      如果数组元素是UDT,并且给定的类型映射中有该UDT的条目,则此方法执行自定义映射。自定义映射是递归的,意味着如果,例如,SQL结构类型的元素是一个SQL结构类型,该SQL结构类型本身具有一个是SQL结构类型的元素,那么每个具有自定义映射的结构类型将根据给定的类型映射进行映射。

      指定者:
      getArray 在接口 Array
      参数:
      index - 要复制的第一个元素在此SerialArray对象中的索引;数组中第一个元素的索引为0
      count - 要复制的连续元素的数量,从给定索引开始
      map - 一个java.util.Map对象,其中每个条目包括1)给出UDT的完全限定名称的String对象和2)定义UDT如何映射的SQLData实现的Class对象
      返回值:
      作为Java编程语言中的Object的此SerialArray对象中指定元素的副本
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
    • getBaseType

      public int getBaseType() throws SerialException
      检索此SerialArray对象中元素的SQL类型。返回的intjava.sql.Types类中的常量之一。
      指定者:
      getBaseType 在接口 Array
      返回值:
      java.sql.Types中的常量之一,表示此SerialArray对象中元素的SQL类型
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
    • getBaseTypeName

      public String getBaseTypeName() throws SerialException
      检索此SerialArray对象中元素的DBMS特定类型名称。
      指定者:
      getBaseTypeName 在接口 Array
      返回值:
      SerialArray对象的基本类型的DBMS使用的SQL类型名称
      抛出:
      SerialException - 如果发生错误;如果此对象之前已调用free
    • getResultSet

      public ResultSet getResultSet(long index, int count) throws SerialException
      检索一个ResultSet对象,其中包含从索引index开始并包含最多count个连续元素的子数组的元素。如果映射中包含基本类型的条目,则此方法使用连接的类型映射来映射数组的元素。否则,将使用标准映射。
      指定者:
      getResultSet 在接口 Array
      参数:
      index - 要复制的第一个元素在此SerialArray对象中的索引;数组中第一个元素的索引为0
      count - 要复制的连续元素的数量,从给定索引开始
      返回值:
      一个ResultSet对象,其中包含此SerialArray对象中指定元素,每个元素单独一行
      抛出:
      SerialException - 如果调用时原因设置为UnsupportedOperationException
    • getResultSet

      public ResultSet getResultSet(Map<String,Class<?>> map) throws SerialException
      检索一个ResultSet对象,其中包含此SerialArray对象表示的SQL ARRAY值的所有元素。除非数组的基本类型与map中的用户定义类型(UDT)匹配,否则此方法使用指定的映射进行类型映射自定义。此方法的版本getResultSet使用给定的类型映射或标准映射;它永远不使用与连接关联的类型映射。
      指定者:
      getResultSet 在接口 Array
      参数:
      map - 一个java.util.Map对象,其中每个条目包括1)给出UDT的完全限定名称的String对象和2)定义UDT如何映射的SQLData实现的Class对象
      返回值:
      一个ResultSet对象,其中包含此SerialArray对象中的所有元素,每个元素单独一行
      抛出:
      SerialException - 如果调用时原因设置为UnsupportedOperationException
    • getResultSet

      public ResultSet getResultSet() throws SerialException
      检索一个ResultSet对象,其中包含此SerialArray对象表示的SQL ARRAY值的所有元素。如果适用,数组的元素将使用连接的类型映射进行映射;否则,将使用标准映射。
      指定者:
      getResultSet 在接口 Array
      返回值:
      一个ResultSet对象,其中包含此SerialArray对象中的所有元素,每个元素单独一行
      抛出:
      SerialException - 如果调用时原因设置为UnsupportedOperationException
    • getResultSet

      public ResultSet getResultSet(long index, int count, Map<String,Class<?>> map) throws SerialException
      检索一个包含此SerialArray对象中元素子数组的元素的结果集。从索引index开始,包含最多count个连续元素。除非数组的基本类型与map中的用户定义类型(UDT)匹配,否则此方法使用指定的映射进行类型映射自定义。此方法的版本getResultSet使用给定的类型映射或标准映射;它永远不使用与连接关联的类型映射。
      指定者:
      getResultSet 在接口 Array
      参数:
      index - 要复制的第一个元素在此SerialArray对象中的索引;数组中第一个元素的索引为0
      count - 要复制的连续元素的数量,从给定索引开始
      map - 一个java.util.Map对象,其中每个条目包括1)给出UDT的完全限定名称的String对象和2)定义UDT如何映射的SQLData实现的Class对象
      返回值:
      一个ResultSet对象,其中包含此SerialArray对象中指定元素,每个元素单独一行
      抛出:
      SerialException - 如果调用时原因设置为UnsupportedOperationException
    • equals

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

      public int hashCode()
      返回此SerialArray的哈希码。计算SerialArray对象的哈希码使用SerialArray对象的元素的哈希码
      覆盖:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • clone

      public Object clone()
      返回此SerialArray的克隆。副本将包含对基础对象数组的克隆的引用,而不是对此SerialArray对象的原始基础对象数组的引用。
      覆盖:
      clone 在类 Object
      返回:
      此SerialArray的克隆
      参见: