为了查询 SQLServerPreparedStatement 对象或 SQLServerCallableStatement 对象以了解其所包含的参数,Microsoft SQL Server JDBC Driver 实现了 SQLServerParameterMetaData 类。该类包含很多以单个值的格式返回信息的字段和方法。

若要创建 SQLServerParameterMetaData 对象,可以使用 SQLServerPreparedStatementSQLServerCallableStatement 类的 getParameterMetaData 方法。

在下面的实例中,将向此函数传递 SQL Server 2005 AdventureWorks 示例数据库的打开连接,使用 SQLServerCallableStatement 类的 getParameterMetaData 方法返回 SQLServerParameterMetaData 对象,然后使用 SQLServerParameterMetaData 对象的多种方法,显示 HumanResources.uspUpdateEmployeeHireInfo 存储过程中包含的参数的模式和类型有关信息。

public static void getParameterMetaData(Connection con) {
   try {
      CallableStatement cstmt = con.prepareCall("{call HumanResources.uspUpdateEmployeeHireInfo(?, ?, ?, ?, ?)}");
      ParameterMetaData pmd = cstmt.getParameterMetaData();
      int count = pmd.getParameterCount();
      for (int i = 1; i <= count; i++) {
         System.out.println("TYPE: " + pmd.getParameterTypeName(i) + " MODE: " + pmd.getParameterMode(i));
      }
      cstmt.close();
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}
注意: SQLServerParameterMetaData 类和预定义的语句一起使用时有一些限制。JDBC 驱动程序支持 SELECT、DELETE、INSERT 和 UPDATE 语句。但是,这些语句不能包含子查询。此外,JDBC 驱动程序还支持使用 IN、IS 和 LIKE 谓词。对于搜索条件,JDBC 驱动程序支持使用 IS、<、>、LIKE、>=、<=、NOT IN、<>、!>、!< 和 != 比较运算符。不支持 FREETEXT 运算符。

请参阅

使用 JDBC 驱动程序处理元数据