前面的主题描述了用于创建不包含现有 Java™ 类的新的不透明类型的方法。从现有 Java
代码创建不透明类型时,请指定不透明类型中包含的 SQL 名称、JAR 文件 SQL 名称、
支持的 UDR(如果有)和任何其他不支持的 UDR。
(有关 SQL 名称的解释,请参阅SQL
名称。)还可以指定长度、对齐方式、隐式和显式强制转换。
要从现有的代码创建不透明类型。请使用以下方法:
•
UDTMetaData.setSQLName() 指定 SQL 语句中引用的不透明类型的 SQL 名称
•
对于不透明类型中支持的 UDR 使用 UDTMetaData.setSupportUDR()
支持的 UDR 为输入/输出、发送/接收等等。
•
对于不透明类型中不支持的 UDR 使用 UDTMetaData.setUDR()
•
UDTMetaData.setJarFileSQLName() 指定 JAR 文件的 SQL 名称
•
UDTMetaData.setImplicitCast() 或 UDTMetaData.setExplicitCast() 指定强制转换
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 181 -
•
如果不透明类型是固定长度的,
使用 UDTMetaData.setLength()
(驱动程序缺省为可
变长度)
•
UDTMetaData.setAlignment() 指定不透明类型所对齐的字节边界(仅当您不希望数
据库服务器默认 4 字节边界时)
•
UDTManager.createJar() 创建 JAR(.jar)文件(如果没有)
•
UDTManager.createUDT() 创建不透明类型
另外,
setXXXCast() 、
setSupportUDR() 和 setUDR() 方法仅用于从现有代码创建不透明类型:
public void setImplicitCast(int ifxtype, String methodsqlname)
throws SQLException
public void setExplicitCast(int ifxtype, String methodsqlname)
throws SQLException
public void setSupportUDR(Method method, String sqlname, int type)
throws SQLException
public void setUDR(Method method, String sqlname)
throws SQLException
setXXXCast() 方法
setXXXCast() 方法指定显式或隐式将不透明类型转换为指定的数据类型。
ifxtype 参数是类 com.gbasedbt.lang.IfxTypes 的类型代码。数据库服务器中的 ifxtype 参数和
SQL 类型之间的数据类型映射在映射转换类型中进行了详细说明。methodsqlname 参数是
实现此转换的 Java™ 方法的 SQL 名称。
以下示例使用 SQL 名称 circle2_input 设置由 Java 方法实现的隐式转换:
setImplicitCast(com.gbasedbt.lang.IfxTypes.IFX_TYPE_LVARCHAR,
"circle2_input");
以下示例使用 SQL 名称 circle_output 设置由 Java 方法实现的显式转换:
setExplicitCast(com.gbasedbt.lang.IfxTypes.IFX_TYPE_LVARCHAR,
"circle2_output");
以下示例设置一个显式转换,将 circle2 不透明类型转换为整数:
setExplicitCast(com.gbasedbt.lang.IfxTypes.IFX_TYPE_INT,
"circle2_to_int");
setSupportUDR() 和 setUDR() 方法
setSupportUDR() 方法在现有 Java™ 类中指定 Java 方法,该类将被注册为不透明类型支持
的 UDR。
method 参数指定 java.lang.reflect.Method 中的一个对象,
将其注册为数据库服务中不透明类
型的 Java 支持 UDR。支持的 UDR 为输入、输出、发送、接收等等。(有关更多信息,
请参阅 GBase 8s 用户定义的例程和数据类型开发者指南 。)
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 182 -
sqlname 参数指定方法的 SQL 名。有关更多信息,请参阅 SQL 名称。
type 参数指定支持的 UDR 的类型。如下所示:
UDTMetaData.INPUT
UDTMetaData.OUTPUT
UDTMetaData.SEND
UDTMetaData.RECEIVE
UDTMetaData.IMPORT
UDTMetaData.EXPORT
UDTMetaData.BINARYIMPORT
UDTMetaData.BINARYEXPORT
有关如何从现有代码创建不透明类型的操作步骤,请参阅从现有 Java 类创建不透明类型。
提示: 不必注册 SQLData 接口中方法。例如,您不需注册 SQLData.getSQLTypeName() 、
SQLData.readSQL() 或 SQLData.writeSQL()。
要指定其他 UDR,使用创建 UDR 中描述的 setUDR()。