C# 使用 sid 連接 Oracle(無需安裝 Oracle 客戶端)


最接我們公司的折桂打印平台系統,決定增加支持新的數據庫:Oracle 數據庫。其中主要代碼是 C#, 其次是 Java。 Java 連各種數據庫,很容易,下載 JDBC 驅動程序就可以了。C# 相對麻煩一點,我決定花點時間,進行調研/學習,調通 C# 連接 Oracle(無需安裝 Oracle 客戶端)。

經過幾天的網上搜索,中文、英文的資料,都看了不少。絕大多數,不靠譜,根本行不通,其文中說是可以不需要安裝 Oracle 客戶端,文章下方有人反饋,不安裝Oracle 客戶端運行時會報錯,博主都不回應。

偶爾發現,有個方法,C# 使用 sid 連接 Oracle(無需安裝 Oracle 客戶端),可以成功。特記錄,以防遺忘。兼供各位參考。

 

以下是詳細步驟:

a.使用 NuGet 安裝 Oracle.ManagedDataAccess 到項目。

使用 Visual Studio 打開項目,右鍵點擊項目,彈出菜單選擇“管理 NuGet 程序包”,搜索並安裝 Oracle.ManagedDataAccess。

此處,我使用的是 Visual Studio Community 2019 , NuGet 搜索后安裝的是 Oracle.ManagedDataAccess 19.10.1 。

如果彈出窗口,要求接受協議,選擇“是”。

 

b. 編寫代碼,連接 Oracle 數據庫,使用 sid, 不使用 tnsname。

示例代碼如下:

 1 public void test()
 2 {
 3     //OK
 4     string strConnectBySid = "Data Source =(DESCRIPTION =(ADDRESS=(PROTOCOL=TCP)(HOST =" + OracleConnectInfo.strDbIPOrHostName
 5         + ")(PORT=" + OracleConnectInfo.iDbPort + "))(CONNECT_DATA=(SID =" + OracleConnectInfo.strDbSID  6         + "))); User Id = " + OracleConnectInfo.strDbUser + "; Password=" + OracleConnectInfo.strDbPassword + ";";
 7 
 8     using (OracleConnection conn = new OracleConnection(strConnectBySid))
 9     {
10         conn.Open();
11         string sql = "select 1 from dual";
12         //string sql = "select cname from tm_user where id = 21728";
13 
14         using (OracleCommand cmd = new OracleCommand(sql, conn))
15         {
16             object o = cmd.ExecuteScalar();
17             System.Console.WriteLine("ExecuteScalar:" + o);
18         }
19         conn.Close();
20     }
21 }

請注意,如果使用 tnsname, 則需要安裝 oracle 客戶端。而直接使用 sid, 則不需要安裝 oracle 客戶端。

 

===============歡迎轉載,轉載請注明出處:https://www.cnblogs.com/jacklondon/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM