返回首页

gbase数据、南大通用产品文档:GBase8s集合和数组

更新日期:2024年09月11日

JDBC 3.0 规范仅描述一个方法,
来交换 Java™ 客户机与关系型数据库之间的集合数据:

组。
由于数组接口不包括构造函数,因此,GBase 8s JDBC Driver 包括一个扩展,允许
在 PreparedStatement.setObject() 和ResultSet.getObject() 方法中使用 java.util.Collection 对象。

如果您更愿意使用 Array 对象,则请使
用 PreparedStatement.setArray() 和 ResultSet.getArray() 方法。
Collection 对象更易于使用,

Array 对象符合 JDBC 3.0 标准。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 117 -

在缺省情况下,
在访存期间,
驱动程序将 LIST 列映射至 java.util.ArrayList 对象,
而将 SET
和 MULTISET 列映射至 java.util.HashSet 对象。您可覆盖这些缺省值,但您使用的类必须
实现 java.util.Collection 接口。
要覆盖此缺省的映射,
可使用 java.util.Collection 接口中的其他类,
诸如 TreeSet 类。
还可创
建实现 java.util.Collection 接口的自己的类。在任一情况下,您都必须使
用 Connection.setTypeMap() 方法来提供定制的类型映射。
在 INSERT 操作期间,必须将作为 java.util.Set 接口实例的任何 java.util.Collection 对象映
射至 GBase 8s MULTISET 数据类型。将java.util.List 接口的实例映射至 GBase 8s LIST 数
据类型。通过创建定制的类型映射,可覆盖这些缺省值。
要获取关于定制的类型映射的信息,请参阅 映射数据类型。
重要: set 是无序的定义。如果使用 HashSet 对象来选择集合数据,则 HashSet 对象中元素的顺
序可能与插入该 set 时指定的顺序不同。例如,如果数据库服务器上的数据为 set {1, 2, 3},则
检索至 HashSet 对象内的数据可能为 {3, 2, 1},或任何其他顺序。
下列部分中所有示例的完整版本位于您安装驱动程序处的 complex-types 目录中。要获取更
多信息,请参阅 示例代码文件。

本示例中,使用转义符的方式指定一个不可见字符为行分隔符,这个不可见字符表
示系统铃音,转义符表示为'\a',导出方法如下:
$ ./orato8a --user='ssbm/ssbm@maya' --query="select id,name from message where
rownum>=5;" --file='./message.tbl' --format=3 --field='|' --string_qualifier="'"
--line_separator='\a'
export columns: 2
export rows: 5
export time: 0 sec
process ok!
$ cat message.tbl
'1'|'Tom''2'|'小明''3'|'Peter''4'|'Yama''5'|'Hellen'
由于是不可见字符,所以直接用cat 命令查看不到该字符,使用-e 参数查看结果如
下:
$ cat –e message.tbl
'1'|'Tom'^G'2'|'M-eM-0M-^OM-fM-^XM-^N'^G'3'|'Peter'^G'4'|'Yama'^G'5'|'Hellen'^G
说明
其中表示为'^G'的部分即为我们指定的行分隔符'\a'。

参数说明:用于设置执行HASH JOIN 操作时HASH 表的大小。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,0~INT_MAX/2。
默认值:0