一、概述

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)

C#使用Oracle.ManagedDataAccess.dll组件连接Oracle数据库

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

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

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

C#使用Oracle.ManagedDataAccess.dll组件连接Oracle数据库

注意:如果需要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文件)

<oracle.manageddataaccess.client>
 <version number="*">
   <dataSources>
      <dataSource alias="orcl" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME = orcl)))"/>
    </dataSources>
  </version>
</oracle.manageddataaccess.client>

3、使用 TNS_ADMIN目录:

<oracle.manageddataaccess.client>
 <version number="*">
   <settings>
          <setting name="TNS_ADMIN" value="C:\app\oracle\product\12.1.0\client_1\Network\Admin\"/>  
    </settings>
  </version>
</oracle.manageddataaccess.client>

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

<configuration>
   <configSections>
   <section name="oracle.manageddataaccess.client"
     type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
   </configSections>
   <system.data>
       <DbProviderFactories>
           <remove invariant="Oracle.ManagedDataAccess.Client"/>
           <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
               type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
       </DbProviderFactories>
   </system.data>
   <runtime>
       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
           <dependentAssembly>
               <publisherPolicy apply="no"/>
               <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
               <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.19.1"/>
           </dependentAssembly>
       </assemblyBinding>
   </runtime>
   <oracle.manageddataaccess.client>
       <version number="*">
           <dataSources>
               <dataSource alias="SampleDataSource"
                   descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
           </dataSources>
       </version>
   </oracle.manageddataaccess.client>
</configuration>

三、使用

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));
}

来源:https://www.cnblogs.com/springsnow/p/11393678.html

标签:C#,Oracle.ManagedDataAccess.dll,组件,连接,Oracle,数据库
0
投稿

猜你喜欢

  • Linux操作系统下MySQL数据库的使用方法

    2008-12-26 09:24:00
  • 基于python3实现倒叙字符串

    2023-02-02 17:41:28
  • SQL Server 2012 安装与启动图文教程

    2024-01-27 08:33:35
  • vue3+vite使用jsx和tsx详情

    2024-05-10 14:15:47
  • Python Requests 基本使用及Requests与 urllib 区别

    2023-04-07 17:58:11
  • python装饰器decorator介绍

    2021-12-18 10:56:25
  • 从零开始写jQuery框架

    2008-12-24 13:37:00
  • Python运算符重载的简单实例代码

    2021-02-13 11:21:22
  • 详解MySQL 数据库优化方法

    2010-08-12 14:50:00
  • nodejs简单实现TCP服务器端和客户端的聊天功能示例

    2024-05-03 15:55:56
  • pytest自动化测试fixture的作用域实例化顺序及可用性

    2022-06-22 14:46:30
  • Python数据结构与算法之字典树实现方法示例

    2022-02-28 19:42:37
  • Python稀疏矩阵scipy.sparse包使用详解

    2022-07-31 04:42:42
  • SQL Server 获取服务器时间的sql语句

    2024-01-20 02:14:52
  • MySQL中关于临时表的一些基本使用方法

    2024-01-18 01:22:34
  • 如何利用Python和matplotlib更改纵横坐标刻度颜色

    2022-06-02 04:00:03
  • php中如何判断一个网页请求是ajax请求还是普通请求

    2023-10-13 14:42:30
  • Linux下设置每天自动备份数据库的方法

    2024-01-24 02:45:31
  • JavaScript 日期下拉选择器

    2008-10-31 12:13:00
  • php中mysql连接方式PDO使用详解

    2023-11-06 02:46:43
  • asp之家 网络编程 m.aspxhome.com