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.

Vea también

Otros recursos

Controlar metadatos con el controlador JDBC