SQL 92 和 99 标准为动态 SQL 指定 DESCRIBE INPUT 语句。
JDBC 3.0 规范引入对应于 DESCRIBE INPUT 支持的 ParameterMetaData 类和方法。
GBase 8s JDBC Driver 实现 java.sql.ParameterMetaData 类。
此接口用于描述准备好的语句中
的输入参数。已实现了方法getParameterMetaData() 来为特别的语句检索元数据。
ParameterMetaData 类和 getParameterMetaData() 方法是 JDBC 3.0 API 的一部分,作为
J2SDK1.4.0 中的接口包括它们。在 JDBC 3.0 规范中指定这些接口的详细信息。
GBase 8s JDBC Driver 已实现了 ParameterMetaData 接口的附加方法,来扩展它的功能,如
下表中所示。
返回类型
方法
描述
int
getParameterLength (int param)
检索参数长度
int
getParameterExtendedId (int param)
检索参数扩展的 ID
java.lang.Stri
ng
getParameterExtendedName (int param) 检索参数扩展的名称
java.lang.Stri
ng
getParameterExtendedOwnerName (int
param)
检索该类型的参数扩展的所
有者名称
int
getParameterSourceType (int param)
检索参数 SourceType
int
getParameterAlignment (int param)
检索参数对齐
下列是在 GBase 8s JDBC Driver 中使用 ParameterMetaData 接口的一个示例:
. . .
try
{
PreparedStatement pstmt = null;
GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 83 -
pstmt = myConn.prepareStatement(
"select * from table_1 where int_col = ? "
+"and string_col = ?");
ParameterMetaData paramMeta = pstmt.getParameterMetaData();
int count = paramMeta.getParameterCount();
System.out.println("Count : "+count);
for (int i=1; i <= count; i++)
{
System.out.println("Parameter type name : "
+paramMeta.getParameterTypeName(i));
System.out.println("Parameter type : "
+paramMeta.getParameterType(i));
System.out.println("Parameter class name : "
+paramMeta.getParameterClassName(i));
System.out.println("Parameter mode : "
+paramMeta.getParameterMode(i));
System.out.println("Parameter precision : "
+paramMeta.getPrecision(i));
System.out.println("Parameter scale : "
+paramMeta.getScale(i));
System.out.println("Parameter nullable : "
+paramMeta.isNullable(i));
System.out.println("Parameter signed : "
+paramMeta.isSigned(i));
}
. . .