Usar metadatos de parámetros
Para hacer una consulta a un objeto SQLServerPreparedStatement o SQLServerCallableStatement acerca de los parámetros que contienen, el controlador JDBC de Microsoft SQL Server implementa la clase SQLServerParameterMetaData. Esta clase contiene numerosos campos y métodos que devuelven información en forma de un solo valor.
Para crear un objeto SQLServerParameterMetaData, puede usar los métodos getParameterMetaData de las clases SQLServerPreparedStatement y SQLServerCallableStatement.
En el siguiente ejemplo, se pasa a la función una conexión a la base de datos de ejemplo SQL Server 2005 AdventureWorks, se usa el método getParameterMetaData de la clase SQLServerCallableStatement para devolver un objeto SQLServerParameterMetaData y después se usan varios métodos del objeto SQLServerParameterMetaData para mostrar información sobre el tipo y el modo de los parámetros que están contenidos dentro del procedimiento almacenado 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();
}
}
Nota
Hay varias limitaciones a la hora de usar la clase SQLServerParameterMetaData con instrucciones preparadas. El controlador JDBC es compatible con las instrucciones SELECT, DELETE, INSERT y UPDATE. No obstante, estas instrucciones no deberían contener subconsultas. Además, el controlador JDBC también es compatible con el uso de predicados IN, IS y LIKE. En condiciones de búsqueda, el controlador JDBC es compatible con los operadores comparativos IS, <, >, LIKE, >=, <=, NOT IN, <>, !>, !< y !=. El operador FREETEXT no es compatible.