2015-11-04 51 views
2

有沒有連接到Oracle數據庫而沒有安裝oracle客戶端或使用tnsname的方法?該應用程序需要在客戶機上部署,因此希望它是獨立的。如何在沒有oracle客戶端或tnsname的情況下連接到ORACLE數據庫

+0

我不會去儘可能說這是不可能的,但每個人都會安裝做這種類型的部署中,任何你不想安裝依賴關係的特殊原因? –

+0

使用Oracle的* Managed * ODP.net。它消除了本地客戶端的依賴關係,但是在缺點方面,您將無法訪問OCI的許多高級功能,如批量插入和更新 – Hambone

回答

3

爲了闡明我的意見,可以使用Oracle提供的託管ODP.net,這不需要客戶端計算機安裝任何Oracle客戶端/驅動程序。對於無法控制安裝在目標機器上的軟件的Windows或控制檯應用程序,它非常適用。

要下載的管理客戶端,您可以使用該庫包管理器(https://www.nuget.org/packages/odp.net.managed/)的NuGet得到它:

PM> Install-Package odp.net.managed 

至於TNSNAMES(因爲這也是一個客戶的依賴),如果你使用Oracle的EZ Connect,您可以完全繞過TNSname。要做到這一點,只需將數據源的格式設置爲server-name:port/sid即可。自從可用後,我實際上完全停止使用TNSname。

這裏是你如何能做到這與託管ODP.net一個例子:

OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder(); 
sb.DataSource = "MyOracle.MyCompany.com:1521/MySid"; // EZ Connect -- no TNS Names! 
sb.UserID = "luke"; 
sb.Password = "Jedi4Eva"; 

OracleConnection conn = new OracleConnection(sb.ToString()); 
conn.Open(); 

OracleCommand cmd = new OracleCommand("select * from dual", conn); 
object o = cmd.ExecuteScalar(); 

conn.Close(); 
相關問題