Module
java.sql.rowset
Package javax.sql.rowset.serial
提供实用程序类以允许Java编程语言中的SQL类型和数据类型之间的可序列化映射。
然而,如果在Java对象不能立即可序列化的情况下,序列化是不可能的,则此类将尝试序列化所有非静态成员以允许对象实例状态被序列化。 静态或瞬态字段不能被序列化,并尝试这样做将导致抛出
另外,如果将一个
当调用一个构造函数或getter方法来调用一个
当应用程序调用方法
标准JDBC RowSet实现可以使用这些实用程序类来辅助断开连接的RowSet对象的序列化。 当通过线路将断开连接的RowSet对象传输到应用程序中的不同VM或跨层时,这是有用的。
1.0串行数组
SQL编程语言中的可序列化映射SQL ARRAY值。SerialArray类提供了一个从Array对象创建一个SerialArray实例的构造函数,获取基类型的基本类型和SQL名称的方法以及复制SerialArray对象的全部或部分的方法。
2.0 SerialBlob
在Java编程语言中的可序列化映射的SQL BLOB值。SerialBlob类提供了一个从Blob对象创建实例的构造函数。
请注意, SerialBlob对象应该在SerialBlob构建一个SerialBlob对象之前将SQL BLOB值的数据传递给客户端。
SQL BLOB值的数据可在客户端上以字节(使用方法的阵列Blob.getBytes )或作为未解释的字节流(使用方法Blob.getBinaryStream )。
SerialBlob方法可以使SerialBlob对象的副本作为字节数组或流。
它们还可以在Blob对象中找到给定的字节模式或SerialBlob对象。
3.0 SerialClob
SQL编程语言中的可序列化映射SQL CLOB值。SerialClob类提供了一个从Clob对象创建实例的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对象创建实例的Struct函数,一种用于检索数据库中SQL结构类型的SQL类型名称的方法,以及用于检索其属性值的方法。
9.0 SQLInputImpl
用于自定义映射用户定义类型(UDT)的输入流。 一个SQLInputImpl对象是一个输入流,它包含作为UDT属性的一个值流。
当在具有自定义映射的SQL结构化或不同类型上调用方法getObject时, 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的类的Class对象。
要写入的值为SQLData的实例,驱动程序将创建一个SQLOutputImpl的实例,并将其传递给方法SQLData.writeSQL 。
方法writeSQL依次调用适当的SQLOutputImpl写入器方法将数据从SQLData对象写入到作为SQL用户定义类型的表示形式的SQLOutputImpl输出流。
自定义映射
JDBC API提供了将SQL结构类型或DISTINCT类型映射到Java编程语言的机制。 通常,结构化类型映射到类,其属性映射到类中的字段。 (DISTINCT类型可以被认为具有一个属性。)然而,还有许多其他可能性,并且可能存在任何数量的不同映射。 程序员通过实现接口SQLData定义映射。 例如,如果名为AUTHORS的SQL结构类型具有NAME,TITLE和PUBLISHER的属性,则可将其映射到名为Authors的Java类。 Authors类可以具有映射AUTHORS的属性的字段名称,标题和发布者。 在这种情况下, 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);
}
}
一个java.util.Map对象用于将SQL结构化类型与其映射关联到类别Authors 。
以下代码片段显示了如何创建一个Map对象,并给出了一个与AUTHORS和Authors相关联的条目。
java.util.Map map = new java.util.HashMap();
map.put("SCHEMA_NAME.AUTHORS", Class.forName("Authors");
该Map对象映射现在包含一个具有SQL结构类型的完全合格的名称,条目Class对象类Authors 。
它可以传递给一个方法来告诉司机如何将AUTHORS映射到Authors 。
对于断开连接的RowSet对象,只有当一个Map对象传递给将要执行自定义映射的方法或构造函数时,才能进行自定义映射。 连接的RowSet对象的情况是不同的,因为它们保持与数据源的连接。 执行自定义映射并由断开连接的RowSet对象调用的方法可以使用与Map使用的Map对象相关联的Connection对象。 换句话说,如果没有指定地图,则默认情况下可以使用连接的类型映射。
-
类摘要 Class 描述 SerialArray 一个Array对象的序列化版本,它是Java编程语言中的一个SQLARRAY值的映射。SerialBlob 一个序列化映射的Java编程语言中的一个SQLBLOB值。SerialClob 在Java编程语言中的序列化映射SQLCLOB值。SerialDatalink 一个序列化映射的Java编程语言中的一个SQLDATALINK值。SerialJavaObject 一个可编程JAVA_OBJECT映射的Java编程语言中的一个SQLJAVA_OBJECT值。SerialRef 一个Ref对象的序列化映射,它是Java编程语言中的一个SQLREF值的映射。SerialStruct SQL编程语言中的SQL结构化类型的序列化映射。SQLInputImpl 用于自定义映射用户定义类型(UDT)的输入流。SQLOutputImpl 用于将自定义映射的用户定义类型(UDT)的属性写入数据库的输出流。 -
异常摘要 异常 描述 SerialException 指示和错误的序列化或BLOB, CLOB, STRUCT or ARRAY序列化的SQL类型,如BLOB, CLOB, STRUCT or ARRAY除了SQL类型,如DATALINK and JAVAOBJECT