在咱們開發應用場景常常碰到須要鏈接Oracle數據庫,這也是至關常見的一種狀況。通常.Net環境鏈接Oracle數據庫,能夠經過TNS/SQL.NET 配置文件,而 TNS 必需要 Oracle 客戶端。
場景1、不少在使用微軟自帶的Using System.Data.OracleClient(聽說如今已經不維護的)的時候,在沒有安裝Oracle客戶端的服務器上運行,會提示你須要安裝Oracle客戶端,不過在Oracle 12之後的版本都不多使用這種方法了。
場景2、也有不少人直接調用了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數據庫。html
Oracle官網爲C#提供了全新的ODP.Net方式的全託管驅動Oracle.ManagedDataAccess,而且還 EF 支持分佈式事務,官網下載地址(地址還挺很差找的,下載的時候須要Oracle帳戶才行,沒有的話註冊一個也挺快的)—傳送門:http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html,如圖所示:sql
下載解壓找到咱們須要的Oracle.ManagedDataAccess.dll,若是你使用EF框架,則選擇EF6當中的dll,如圖所示:數據庫
將Oracle.ManagedDataAccess.dll引用到咱們的項目當中,而後檢驗下連接Oracle是否鏈接成功。windows
代碼段:服務器
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; 7 using 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
oracle