2011-06-08 29 views

回答

2

沒有一些自動搜索。如果您希望Oracle的JDBC驅動程序使用您的tns名稱,則必須定義系統屬性(-D)oracle.net.tns_admin=<directory where tnsnames.ora is located>。我建議設置它,所以你可以使用它,並且ojdbc也將被使用(如果需要)

+0

如果在運行時使用'System.setProperty'設置'oracle.net.tns_admin'還是需要在啓動應用程序時設置參數? – 2011-06-08 08:22:44

+1

爲了讓您使用它,您只需確保在需要之前就已設置好了它。 OJDBC,我相信它需要在一些'static'初始化器中並且可以使用它,你必須確保在加載ojdbc類之前它已經被設置好了(但是這很難,所以最安全的是把它放在命令行上 - 你需要這個,如果你想爲oracle連接使用tnsnames) – 2011-06-08 08:28:37

+0

就在'Class.forName()'還不夠早呢?自然,當引入框架來處理驅動程序和連接時,事情變得更加棘手。 – 2011-06-08 08:33:32

0

如果您已將ORACLE_HOME設置爲envinroment變量,則可以使用System.getenv("ORACLE_HOME");來訪問它。

參見javadoc

1

tnsnames.ora在ORACLE_HOME/network/admin。代碼應該是:

String oracleHome = System.getenv("ORACLE_HOME"); 
if(oracleHome != null){ 
    String tnsFilename = oracleHome + File.separatorChar + 
         "network" + File.separatorChar + 
         "admin" + File.separatorChar + 
         "tnsnames.ora"; 
}