C# 不安裝Oracle客戶端情況下,如何連接到Oracle數據庫
簡介:
在我們開發應用場景經常碰到需要連接Oracle數據庫,這也是相當常見的一種情況。一般.Net環境連接Oracle數據庫,可以通過TNS/SQL.NET 配置文件,而 TNS 必須要 Oracle 客戶端。
場景一、很多在使用微軟自帶的Using System.Data.OracleClient(據說現在已經不維護的)的時候,在沒有安裝Oracle客戶端的服務器上運行,會提示你需要安裝Oracle客戶端,不過在Oracle 12以後的版本都很少使用這種方法了。
場景二、也有很多人直接調用了Oracle客戶端下的Oracle.DataAccess.dll(一般在Oracle安裝目錄下的product\11.2.0\dbhome_1\ODP.NET\bin\2.x當中)。但是在程序運行時,碰到最多的情況可能就是,Oracle.DataAccess.Client.OracleException報錯:提供程序與此版本的 Oracle 客戶機不兼容(一般檢查下本機的Oracle的Oracle.DataAccess.dll和你引用的Oracle.DataAccess.dll版本是不是一致的,替換相同的版本就能解決此問題)。
下面主要介紹,不需要安裝Oracle客戶端,通過最新的ODP.Net方式(Oracle.ManagedDataAccess.dll)直接連接Oracle數據庫。
Oracle全托管驅動Oracle.ManagedDataAccess
Oracle官網為C#提供了全新的ODP.Net方式的全托管驅動Oracle.ManagedDataAccess,並且還 EF 支持分布式事務,官網下載地址(地址還挺不好找的,下載的時候需要Oracle賬戶才行,沒有的話註冊一個也挺快的)—傳送門:http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html,如圖所示:
下載解壓找到我們需要的Oracle.ManagedDataAccess.dll,如果你使用EF框架,則選擇EF6當中的dll,如圖所示:
將Oracle.ManagedDataAccess.dll引用到我們的項目當中,然後檢驗下鏈接Oracle是否連接成功。
代碼段:
1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7using Oracle.ManagedDataAccess.Client; 8 9 namespace ForbiddenTools 10 { 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 Console.Title = "Oracel連接測試"; 16 string connString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服務器IP地址)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME = 服務器名稱)));User Id=用戶名;Password=密碼;"; 17 OracleConnection conn = new OracleConnection(connString); 18 conn.Open(); 19 if (conn.State == ConnectionState.Open) 20 { 21 string sql = @"select sysdate from dual"; 22 OracleCommand cmd = new OracleCommand(sql, conn); 23 Console.WriteLine(cmd.ExecuteScalar()); 24 conn.Close(); 25 } 26 Console.ReadKey(); 27 } 28 } 29 }
PS:如有疑問,請留言,未經允許,不得私自轉載,轉載請註明出處:http://www.cnblogs.com/xuliangxing/p/8391547.html
C# 不安裝Oracle客戶端情況下,如何連接到Oracle數據庫