C#(072):使用托管程序连接Oracle数据库(Oracle.ManagedDataAccess.dll)


一、概述

Oracle Data Provider for .NET, Managed Driver:

Oracle官方的托管数据库访问组件,单DLL,Oracle.ManagedDataAccess.dll,不安装Oracle客户端,不区分32/64位,
直接引用即可。

与非托管程序为Oracle.DataAccess.dll相比,BulkCopy和CustomType之类的都是不支持的:

1、下载地址

官方下载地址:

http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html
(当前下版本为64-bit ODAC 12.2c Release 1 (12.2.0.1.0))

nuget:

https://www.nuget.org/packages/Oracle.ManagedDataAccess/ (当前下版本为19.7.0)

https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/
(当前下版本为19.7.0)

下载好后 从这个目录下 odp.net\managed\common拿出最关键的两个dll

Oracle.ManagedDataAccess.dll 和 Oracle.ManagedDataAccess.EntityFramework.dll 。

也可以在项目Nuget中直接安装这两个包。

注意:如果需要Entity Framework 设计时特性和其他如TableAdapter向导Visual
Studio设计器,可以从https://otn.oracle.com/dotnet下载32位的“Oracle Developer Tools
for Visual Studio” 。

此NuGet下载不支持设计时工具;它只提供运行时支持。这个版本的ODP.NET支持Oracle数据库版本11.2或更高版本。

二、配置文件定义数据源

1、无配置文件情况,直接连接DB

无SQL*Net配置文件tnsnames.ora,直接在C#程序中写连接字符串

    string conString = "User Id=hr; password=hr;Data Source=localhost:1521/orcl; Pooling=false;";

2、使用配置文件方式:

1、使用 tnsnames.ora文件,此文件需放置在应用程序同目录:

tnsnames.ora内容:

    ORCL =
                  (DESCRIPTION =
                    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
                    (CONNECT_DATA =
                      (SERVER = DEDICATED)
                      (SERVICE_NAME = orcl)
                    )
                  )

2、使用app.config或\web.config配置文件定义别名(无tnsnames.ora文件)

    
      
        
           
         
       
     

3、使用 TNS_ADMIN目录:

    
      
        
                 
         
       
     

3、完整的app/web.config 文件:

    
        
        

三、使用

    string conString = "User Id=hr; password=hr; Data Source=orcl;Pooling=false; ";
    
    OracleConnection con = new OracleConnection();
    con.ConnectionString = conString;
    con.Open();
    
    OracleCommand cmd = con.CreateCommand();
    cmd.CommandText = "select first_name from employees where department_id = 60";
    
    OracleDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        string conString = "User Id=hr; password=hr; Data Source=orcl;Pooling=false; ";
    
        OracleConnection con = new OracleConnection();
        con.ConnectionString = conString;
        con.Open();
    
        OracleCommand cmd = con.CreateCommand();
        cmd.CommandText = "select first_name from employees where department_id = 60";
    
        OracleDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine("Employee Name: " + reader.GetString(0));
        }
        Console.WriteLine("Employee Name: " + reader.GetString(0));
    }

相关