C# 不安裝Oracle客戶端狀況下,如何鏈接到Oracle數據庫

簡介:

  在咱們開發應用場景常常碰到須要鏈接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全託管驅動Oracle.ManagedDataAccess

  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

相關文章
相關標籤/搜索