返回首页

gbase数据、南大通用产品文档:GBase8sClassGenerator 实用程序

更新日期:2024年09月11日

对于在系统目录中定义的命名的行类型,
ClassGenerator 实用程序生成 Java™ 类。
该实用程
序是对 JDBC 规范的 GBase 8s 扩展。
创建了的 Java 类实现 java.sql.SQLData 接口。对于命名的行中每一字段,该类都有成员。
按照出现在数据库中命名的行类型定义中的顺序,readSQL()、
writeSQL() 和 SQLData.readSQL() 方法读取属性。类似地,writeSQL() 按该顺序将数据写至
流。
将 ClassGenerator 打包在 ifxtools.jar 文件中,因此,CLASSPATH 环境变量必须指
向 ifxtools.jar。
使用 ClassGenerator 的语法如下:
java ClassGenerator rowtypename [-u URL] [-c classname]
classname 的缺省值是 rowtypename 的值。
如果未指定 URL 参数,则从 home 目录中的 setup.std 文件检索所需的信息。
setup.std 的结构如下:
URL jdbc:host-name:port-number

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

gbasedbtserver gbasedbtservername
database database
user user
passwd password
简单命名的行示例
要使用 ClassGenerator,请首先在数据库服务器上创建命名的行,如此示例中所示:
create row type employee (name char (20), age int);
接下来,运行 ClassGenerator:
java ClassGenerator employee
该类生成器生成 employee.java,如后所示,并从 setup.std 检索数据库 URL 信息,其有下
列内容:
URL jdbc:davinci:1528
database test
user scott
passwd tiger
gbasedbtserver picasso_ius
下列为生成了的 .java 文件:
import java.sql.*;
import java.math.*;
public class employee implements SQLData
{
public String name;
public int age;
private String sql_type;

public String getSQLTypeName() { return "employee"; }

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


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

public void writeSQL (SQLOutput stream) throws SQLException
{
stream.writeString(name);
stream.writeInt(age);
}
}
嵌套的命名的行示例
对于嵌套的行,要使用 ClassGenerator,请首先在数据库服务器上创建命名的行:
create row type manager (emp employee, salary int);
接下来,运行 ClassGenerator。在此情况下,不查询 setup.std 文件,因为您在命令行提供了
所有需要的信息:
java ClassGenerator manager -c Manager -u "jdbc:davinci:1528/test:user=scott;
password=tiger;gbasedbtserver=picasso_ius"
-c 选项定义您正在创建的 Java™ 类,其为 Manager(带有大写的 M)。
前面的命令生成下列 Java 类:
import java.sql.*;
import java.math.*;
public class Manager implements SQLData
{
public employee emp;
public int salary;
private String sql_type;

public String getSQLTypeName() { return "manager"; }

public void readSQL (SQLInput stream, String type) throws
SQLException
{
sql_type = type;
emp = (employee)stream.readObject();
salary = stream.readInt();
}

public void writeSQL (SQLOutput stream) throws SQLException
{
stream.writeObject(emp);

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

stream.writeInt(salary);
}
}


-c
指定需要在GBase 8c 各主机上执行的linux shell 命令名。

-?, --help
显示帮助信息。

-V, --version
显示版本号信息。

Cannot execute change permission command (chmod/attrib)
驱动程序无法更改客户端 JAR 文件的权限。
如果您的客户端平台不支持 chmod 或 attrib 命
令,或者如果用户运行的 JDBC 应用程序不具有权限更改客户端 JAR 文件的访问权限,
则可能发生此错误。

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

请确保您的平台上的 chmod 或 attrib 命令是有效的,并且应用程序的用户具有更改客户端
JAR 文件的访问权限的权利。