2013-11-27 36 views
0

從一個java代碼中 - 我已經有一個數據庫連接 - 我需要找到連接的默認模式。如何獲取SQL連接的默認模式?

我有以下的代碼,給了我一個該連接的所有模式列表。

rs = transactionManager.getDataSource().getConnection().getMetaData().getSchemas(); 
while (rs.next()) { 
    log.debug("The schema is {} and the catalogue is {} ", rs.getString(1), rs.getString(2)); 
} 

但是,我不想列出所有的模式。我需要這個連接的默認模式。

請幫忙。

注1:我使用H2和DB2上的Windows7(開發框)和Linux紅帽(生產箱)

注2:我終於得出結論,這是不可能使用連接對象在Java中找到默認H2和DB2的模式使用相同的代碼。我用一個配置文件解決了這個問題。但是,如果有人可以共享解決方案,我可以回頭重構代碼。

+0

沒有返回「默認」(甚至「當前」模式)的JDBC API。我們需要知道您正在使用哪個DBMS?甲骨文? Postgres的? –

+2

在'H2DB'上,您可以發出以下查詢:SELECT * FROM INFORMATION_SCHEMA.SESSION_STATE WHERE KEY ='SCHEMA_SEARCH_PATH''(請參閱:http://stackoverflow.com/questions/10141739/how-to-view-current-schema-搜索路徑在-A-H2-數據庫)。在DB2'VALUES CURRENT SCHEMA' – Alex

+0

@Alex你應該把答案放在答案的部分,而不是在評論中。 – AngocA

回答

0

請使用connection.getMetaData().getURL()方法,它返回字符串像

jdbc:mysql://localhost:3306/?autoReconnect=true&useUnicode=true&characterEncoding=utf8 

我們可以很容易地分析它,並獲取架構名稱。它適用於所有JDBC驅動程序。