programing

특정 JDBC 접속의 데이터베이스 유형을 판별하려면 어떻게 해야 합니까?

topblog 2023. 2. 22. 21:30
반응형

특정 JDBC 접속의 데이터베이스 유형을 판별하려면 어떻게 해야 합니까?

3개의 데이터베이스(Oracle, sybase, MS-Server)에 대해 저장 프로시저/함수를 반환하는 결과 세트를 처리해야 합니다.절차/기능은 일반적으로 동일하지만 Oracle에서는 호출이 조금 다릅니다.

statement.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
...
statement.execute(); 
ResultSet rs = (ResultSet)statement.getObject(1);

JDBC는 일반적인 처리 방법을 제공하지 않기 때문에 코드 내의 다양한 유형의 DB를 구분해야 합니다.연결은 제공되지만 DB가 Oracle인지 확인하는 가장 좋은 방법을 알 수 없습니다.기사 이름은 사용할 수 있지만, 좀 더 깨끗한 방법을 찾고 싶습니다.

DatabaseMetaData 클래스를 사용하길 원할 것 같습니다.DatabaseMetaData.getDatabaseProductName이면 충분합니다.단, 사용하고 있는 특정 데이터베이스의 특정 버전에 의존하는 코드가 있는 경우 getDatabaseProductVersion 메서드를 사용할 수도 있습니다.

org.apache.ddlutils 클래스 Platformutils를 사용할 수 있습니다.

databaseName = new PlatformUtils().determineDatabaseType(dataSource)

언급URL : https://stackoverflow.com/questions/254213/how-to-determine-database-type-for-a-given-jdbc-connection

반응형