Verwenden von Parametermetadaten
Für die Abfrage von SQLServerPreparedStatement- oder SQLServerCallableStatement-Objekten über die enthaltenen Parameter ist im Microsoft SQL Server 2005 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.