为了查询 SQLServerPreparedStatement 对象或 SQLServerCallableStatement 对象以了解其所包含的参数,Microsoft SQL Server JDBC Driver 实现了 SQLServerParameterMetaData 类。该类包含很多以单个值的格式返回信息的字段和方法。
若要创建 SQLServerParameterMetaData 对象,可以使用 SQLServerPreparedStatement 和 SQLServerCallableStatement 类的 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 运算符。