Skip navigation links
Java™ Platform
Standard Ed. 8

Package javax.sql.rowset.serial

提供实用程序类以允许Java编程语言中的SQL类型和数据类型之间的可序列化映射。

See: 描述

Package javax.sql.rowset.serial Description

提供实用程序类以允许Java编程语言中的SQL类型和数据类型之间的可序列化映射。

标准JDBC RowSet实现可以使用这些实用程序类来协助断开连接的RowSet对象的序列RowSet 当通过线路将断开连接的RowSet对象传输到应用程序中的不同VM或跨层时,这是非常有用的。

1.0串行数组

SQL编程语言中的可序列化映射SQL ARRAY值。

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

2.0 SerialBlob

Java编程语言中的可序列化映射,具有SQL BLOB值。

SerialBlob类提供了一个用于从Blob对象创建实例的构造函数。 请注意,Blob对象应该已经将SQL BLOB值的数据提交给客户端,然后再从其中构建一个SerialBlob对象。 SQL BLOB值的数据可在客户端上以字节(使用方法Blob.getBytes)或作为未解释的字节流(使用方法Blob.getBinaryStream)的阵列。

SerialBlob方法可以使SerialBlob对象的副本作为字节数组或流。 它们还可以在SerialBlob对象中找到给定的字节模式或Blob对象。

3.0 SerialClob

SQL编程语言中的可序列化映射SQL CLOB值。

SerialClob类提供了一个用于从Clob对象创建实例的构造函数。 请注意, Clob对象应该将SQL CLOB值的数据转移到客户端,然后再从其中构建一个SerialClob对象。 SQL CLOB值的数据可以作为Unicode字符流在客户端上实现。

SerialClob方法可以从SerialClob对象获取一个子字符串,或查找字符模式的开始。

5.0 SerialDatalink

SQL DATALINK值的Java编程语言中的可序列化映射。 DATALINK值引用始发数据源管理的底层数据源之外的文件。

RowSet实现可以使用方法RowSet.getURL()来检索一个java.net.URL对象,可以用来操纵外部数据。

    java.net.URL url = rowset.getURL(1);

6.0 SerialJavaObject

SQL JAVA_OBJECT值的Java编程语言中的可序列化映射。 假设Java对象实例实现了Serializable接口,这简单地包装了序列化过程。

然而,如果在Java对象不能立即可序列化的情况下,序列化是不可能的,则此类将尝试序列化所有非静态成员以允许对象实例状态被序列化。 静态或瞬态字段无法序列化,并尝试这样做会导致SerialException被抛出。

7.0 SerialRef

SQL REF类型和Java编程语言之间的可序列化映射。

SerialRef类提供了一个构造函数,用于从Ref类型创建一个SerialRef实例,并提供了获取和设置Ref对象类型的方法。

8.0 SerialStruct

SQL结构化类型的Java编程语言中的可序列化映射。 每个不可序列化的属性被映射到可序列化的形式,如果一个属性本身是一个结构化类型,那么它的每个属性都不可序列化,它被映射到可序列化的形式。

另外,如果一个Map对象传递给其中一个构造函数或方法getAttributes ,则结构化类型根据Map对象中指定的映射进行自定义映射。
SerialStruct类提供了一个用于从Struct对象创建实例的构造函数,一种用于检索数据库中SQL结构类型的SQL类型名称的方法,以及用于检索其属性值的方法。

9.0 SQLInputImpl

用于自定义映射用户定义类型(UDT)的输入流。 SQLInputImpl对象是包含作为UDT属性的值的流的输入流。 当在具有自定义映射的SQL结构化或不同类型上调用方法getObject时,此类由驱动程序使用。 程序员从不直接调用SQLInputImpl方法。

SQLInputImpl类提供了一组类似于ResultSet吸气剂方法的读取器方法。 这些方法可以读取SQLInputImpl对象中的值。 方法wasNull用于确定最后读取的值是否为SQL NULL。

当调用了一个构造函数或getter方法,该方法调用了一个Map对象时,JDBC驱动程序调用方法SQLData.getSQLType来确定定制映射的UDT的SQL类型。 驱动程序创建一个SQLInputImpl的实例,用UDT的属性填充它。 然后,驱动程序将输入流传递到方法SQLData.readSQL ,方法SQLData.readSQL又调用SQLInputImpl方法从输入流读取属性。

10.0 SQLOutputImpl

用于将自定义映射用户定义类型(UDT)的属性写入数据库的输出流。 驱动程序在内部使用此接口,并且其方法从不直接由应用程序编程器调用。

当应用程序调用方法PreparedStatement.setObject,时 ,驱动程序将检查要写入的值是否是具有自定义映射的UDT。 如果是,则类型映射中将包含一个包含该UDT SQLData的类的对象的条目。 要写入的值是SQLData的一个实例,驱动程序将创建一个SQLOutputImpl一个实例并传递给方法SQLData.writeSQL 方法writeSQL依次调用适当的SQLOutputImpl写入器方法将数据从SQLData对象写入SQLOutputImpl输出流作为SQL用户定义类型的表示。

自定义映射

JDBC API提供了将SQL结构类型或DISTINCT类型映射到Java编程语言的机制。 通常,结构化类型映射到类,其属性映射到类中的字段。 (DISTINCT类型可以被认为具有一个属性。)然而,还有许多其他可能性,并且可能存在任何数量的不同映射。

程序员通过实现接口定义的映射SQLData 例如,如果名为AUTHORS的SQL结构类型具有NAME,TITLE和PUBLISHER的属性,则可将其映射到名为Authors的Java类。 Authors类可以具有映射AUTHORS的属性的字段名称,标题和发布者。 在这种情况下,SQLData的SQLData可能如下所示:

  public class Authors implements SQLData {
       public String name;
       public String title;
       public String publisher;

       private String sql_type;
       public String getSQLTypeName() {
           return sql_type;
       }

       public void readSQL(SQLInput stream, String type)
                                  throws SQLException  {
           sql_type = type;
           name = stream.readString();
           title = stream.readString();
           publisher = stream.readString();
       }

       public void writeSQL(SQLOutput stream) throws SQLException {
           stream.writeString(name);
           stream.writeString(title);
           stream.writeString(publisher);
       }
   } 
A java.util.Map对象用于将SQL结构化类型与其映射Authors到类别Authors 以下代码片段显示如何创建Map对象,并给出与AUTHORSAuthors的条目。
  java.util.Map map = new java.util.HashMap();
    map.put("SCHEMA_NAME.AUTHORS", Class.forName("Authors"); 
Map对象映射现在包含一个具有SQL结构类型的完全合格的名称,条目对象类Authors 它可以传递给一个方法来告诉司机如何将AUTHORS映射到Authors

对于断开连接的RowSet对象,仅当将Map对象传递给要执行自定义映射的方法或构造函数时,才能进行自定义映射。 连接的RowSet对象的情况是不同的,因为它们保持与数据源的连接。 执行自定义映射并由断开连接的RowSet对象调用的方法可以使用与Map使用的Map对象相关联的Connection对象。 换句话说,如果没有指定地图,则默认情况下可以使用连接的类型映射。

Skip navigation links
Java™ Platform
Standard Ed. 8