返回首页

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

更新日期:2024年09月11日

下列为样例数据库模式:

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 119
-
create table tab ( a set(integer not null), b integer);
insert into tab values ("set{1, 2, 3}", 10);
下列为使用 java.util.HashSet 对象的访存示例:
java.util.HashSet set;

PreparedStatement pstmt;
ResultSet rs;
pstmt = conn.prepareStatement("select * from tab");
System.out.println("prepare ... ok");
rs = pstmt.executeQuery();
System.out.println("executeQuery ... ok");

rs.next();
set = (HashSet) rs.getObject(1);
System.out.println("getObject() ... ok");

/* The user can now use HashSet.iterator() to extract
* each element in the collection.
*/
Iterator it = set.iterator();
Object obj;
Class cls = null;
int i = 0;
while (it.hasNext())
{
obj = it.next();
if (cls == null)
{
cls = obj.getClass();
System.out.println(" Collection class: " + cls.getName());
}
System.out.println(" element[" + i + "] = " +
obj.toString());
i++;
}
pstmt.close();

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 120
-
在此示例的 set = (HashSet) rs.getObject(1) 语句中, GBase 8s JDBC Driver 取得列 1 的类型。
由于它是 SET 类型,因此,实例化一HashSet 对象。接下来,将每一集合元素转换至 Java
™ 对象内,并插入至集合内。
下列访存示例使用 java.util.TreeSet 对象:
java.util.TreeSet set;

PreparedStatement pstmt;
ResultSet rs;

/*
* Fetch a SET as a TreeSet instead of the default
* HashSet. In this example a new java.util.Map object has
* been allocated and passed in as a parameter to getObject().
* Connection.getTypeMap() could have been used as well.
*/
java.util.Map map = new HashMap();
map.put("set", Class.forName("java.util.TreeSet"));
System.out.println("mapping ... ok");

pstmt = conn.prepareStatement("select * from tab");
System.out.println("prepare ... ok");
rs = pstmt.executeQuery();
System.out.println("executeQuery ... ok");

rs.next();
set = (TreeSet) rs.getObject(1, map);
System.out.println("getObject(Map) ... ok");

/* The user can now use HashSet.iterator() to extract
* each element in the collection.
*/
Iterator it = set.iterator();
Object obj;
Class cls = null;
int i = 0;
while (it.hasNext())
{

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 121
-
obj = it.next();
if (cls == null)
{
cls = obj.getClass();
System.out.println(" Collection class: " + cls.getName());
}
System.out.println(" element[" + i + "] = " +
obj.toString());
i++;
}
pstmt.close();
在 map.put("set", Class.forName("java.util.TreeSet" )); 语句中,
覆盖 set = HashSet 的缺省映射。

在 set = (TreeSet)rs.getObject(1, map) 语句中,GBase 8s JDBC Driver 为列 1 取得类型,并
发现它是 SET 对象。然后,驱动程序查找类型映射信息,找到 TreeSet,并实例化
一 TreeSet 对象。接下来,将每一集合元素映射至 Java 对象,并插入至集合内。
下列示例展示插入。此示例将 set (0, 1, 2, 3, 4) 插入至 SET 列内:
java.util.HashSet set = new HashSet();
Integer intObject;
int i;

/* Populate the Java collection */
for (i=0; i < 5; i++)
{
intObject = new Integer(i);
set.add(intObject);
}
System.out.println("populate java.util.HashSet...ok");

PreparedStatement pstmt = conn.prepareStatement
("insert into tab values (?, 20)");
System.out.println("prepare...ok");

pstmt.setObject(1, set);
System.out.println("setObject()...ok");
pstmt.executeUpdate();
System.out.println("executeUpdate()...ok");
pstmt.close();

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 122
-
此示例中的 pstmt.setObject(1, set) 语句首先序列化集合的每一元素。接下来,构造类型信息
作为每一元素转换为 Java 对象。
如果该集合中任何元素的类型都与第一个元素的类型不匹
配,则抛出异常。将类型信息发送至数据库服务器。

审计查看
审计工具将审计事件从八个维度进行了划分,从而方便审计管理员从不同维度对Server 操
作进行审计。

GBA-02BR-0058
错误码
错误标识
错误信息
GBA-02BR-0058

Please run gcrcman as user gbase.
错误出现原因
当前用户错误

GBase 8a MPP Cluster 产品手册
7 附录
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1669
分析与建议
使用gbase 用户