2014-12-07 2 views
3

여러 RDBMS를 지원하는 용도가 있습니다. 사용자는 데이터 소스를 전제 조건으로 정의해야하며 코드 레벨에서 사용자가 연결할 RDBMS를 결정하고 특정 RDBMS 속성을 제공해야합니다.Connection 객체에서 DBMS를 확인하는 방법

예 :, 우리는 연결 URL을 검색 할 수 있습니다 또는 드라이버 이름이 될 수 있으며 RDBMS를 식별 위와 같이

com.mysql.jdbc.Driver   jdbc:mysql://hostname/ databaseName 
oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName 

. 그러나 나는 어떤 RDBMS 사용자가 사용하고 있는지 식별하는 가장 좋은 방법은 무엇인지 명확히하고 싶습니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

나는이 또한 식별 할 수에 따라 발견 등 UNION 여부에 대해 지원합니다. DatabaseMetaData databaseMetaData = con.getMetaData(); 문자열 dbName = databaseMetaData.getDatabaseProductName(); – dnWick

답변

3

이것은 매우 간단합니다. DatabaseMetaData

DatabaseMetaData databaseMetaData = connection.getMetaData(); 
String databaseName = databaseMetaData.getDatabaseProductName(); 
String userName = databaseMetaData.getUserName(); 

UPDATE@dnWick 코멘트에 대답을 참조하십시오.

예,이 DatabaseMetaDataRDBMS을 광범위하게 지원합니다. DatabaseMetaData 인터페이스를 통해 우리가 연결 한 데이터베이스에 대한 메타 데이터를 얻을 수 있습니다. 예를 들어, 데이터베이스에 정의 된 테이블과 각 테이블에있는 열을 볼 수 있습니다. 심지어 연결된 데이터베이스에 대해 지원되는 기능을 확인할 수 있습니다. 데이터베이스가, 여러 트랜잭션에 대한 지원이 있다면 우리는 볼 수 있습니다

+0

감사합니다. 나는 같은 솔루션을 주석으로 사용합니다. 모든 RDBMS에 적용 할 수 있는지 알고 싶습니다. 나는 예라고 추정한다. 이것에 대한 의견이 있으면 공유하십시오 .. – dnWick