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