매개 변수 메타데이터 사용
SQLServerPreparedStatement 또는 SQLServerCallableStatement 개체가 가진 매개 변수에 대해 쿼리하기 위해 SQL Server용 Microsoft JDBC Driver는 SQLServerParameterMetaData 클래스를 구현합니다. 이 클래스에는 단일 값 형태로 정보를 반환하는 다양한 필드와 메서드가 들어 있습니다.
SQLServerParameterMetaData 개체를 만들려면 SQLServerPreparedStatement 및 SQLServerCallableStatement 클래스의 getParameterMetaData 메서드를 사용할 수 있습니다.
다음 예제에서는 AdventureWorks2022 샘플 데이터베이스에 대한 열린 연결이 함수에 전달되고, 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));
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}
참고 항목
준비된 문과 함께 SQLServerParameterMetaData 클래스를 사용하는 경우 몇 가지 제한 사항이 있습니다.
SQL Server용 Microsoft JDBC Driver 6.0 이상 사용: SQL Server 2008 또는 2008 R2를 사용하는 경우 SELECT, DELETE, INSERT 및 UPDATE 문에 하위 쿼리 및/또는 조인이 포함되지 않는 한 JDBC 드라이버에서 이러한 명령문을 지원합니다.
또한 SQL Server 2008 또는 2008 R2를 사용하는 경우 SQLServerParameterMetaData 클래스에 대해 MERGE 쿼리가 지원되지 않습니다. SQL Server 2012 이상 버전의 경우 복잡한 쿼리를 사용하는 매개 변수 메타데이터가 지원됩니다.
암호화된 열에 대한 매개 변수 메타데이터 검색은 지원되지 않습니다. Microsoft JDBC Driver 4.1 또는 4.2 for SQL Server 사용: SELECT, DELETE, INSERT, UPDATE 문에 하위 쿼리 및/또는 조인이 포함되지 않는 한 JDBC 드라이버에서 이러한 문을 지원합니다. MERGE 쿼리는 SQLServerParameterMetaData 클래스에서 지원되지 않습니다.