Verwenden von Parametermetadaten

Für die Abfrage der enthaltenen Parameter bei SQLServerPreparedStatement- oder SQLServerCallableStatement-Objekten ist in Microsoft SQL Server JDBC Driver die SQLServerParameterMetaData-Klasse implementiert. Diese Klasse enthält eine Vielzahl von Feldern und Methoden, die Informationen in der Form eines einzelnen Werts zurückgeben.

Um ein SQLServerParameterMetaData-Objekt zu erstellen, können Sie die getParameterMetaData-Methoden der SQLServerPreparedStatement-Klasse und SQLServerCallableStatement-Klasse verwenden.

Im folgenden Beispiel werden eine offene Verbindung zur SQL Server 2005 AdventureWorks-Beispieldatenbank an die Funktion übergeben, mit der getParameterMetaData-Methode der SQLServerCallableStatement-Klasse ein SQLServerParameterMetaData-Objekt zurückgegeben und dann mit den verschiedenen Methoden des SQLServerParameterMetaData-Objekts Informationen zu Typ und Modus der Parameter angezeigt, die in der gespeicherten Prozedur HumanResources.uspUpdateEmployeeHireInfo enthalten sind.

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();
   }
}

Hinweis

Wenn die SQLServerParameterMetaData-Klasse mit vorbereiteten Anweisungen verwendet wird, gibt es einige Einschränkungen. Der JDBC-Treiber unterstützt SELECT-, DELETE-, INSERT- und UPDATE-Anweisungen. Diese Anweisungen dürfen jedoch keine Unterabfragen enthalten. Darüber hinaus unterstützt der JDBC-Treiber auch IN-, IS- und LIKE-Prädikate. Für Suchbedingungen unterstützt der JDBC-Treiber die Verwendung der Vergleichsoperatoren IS, <, >, LIKE, >=, <=, NOT IN, <>, !>, !< und !=. Der FREETEXT-Operator wird nicht unterstützt.

Siehe auch

Andere Ressourcen

Verarbeiten von Metadaten mit dem JDBC-Treiber