一、概述

Oracle Data Provider for  .NET, Managed Driver:

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

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

下载地址

官方下载地址:

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.3.1)

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

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

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

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

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\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>

使用

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

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>

C#使用托管程序连接Oracle数据库(Oracle.ManagedDataAccess.dll)的更多相关文章

  1. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  2. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Leshami      原文地址:http://blog.csdn.net/ ...

  3. Oracle 数据库(oracle Database)Select 多表关联查询方式

    Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...

  4. C#连接Oracle数据库(直接引用dll使用)

    转载至:http://www.cnblogs.com/gguozhenqian/p/4262813.html 项目中有个功能需要从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的Sq ...

  5. (转)C#连接Oracle数据库(直接引用dll使用)

    原文地址:http://www.cnblogs.com/gguozhenqian/p/4262813.html 项目中有个功能需要从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的S ...

  6. C#连接Oracle数据库字符串(引入DLL)

    需求:从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的SqlClient换成OracleClient调用,结果远没自己想的简单.要么安装Oracle客户端,要么安装PLSQL.网上 ...

  7. Oracle实例和Oracle数据库(Oracle体系结构)---转载

    对于初接触Oracle 数据库的人来讲,很容易混淆的两个概念即是Oracle 实例和Oracle 数据库.这两 概念不同于SQL sever下的实例与数据库,当然也有些相似之处.只是在SQL serv ...

  8. oracle数据库从入门到精通

    oracle产品线围绕企业开发平台的企业开发平台四大组件:unix,weblogic中间件,java编程语言,oracle数据库oracle 开发主要分两类数据库管理:dba数据库编程:分两部分   ...

  9. Oracle数据库11g基于rehl6.5的配置与安装

    REDHAT6.5安装oracle11.2.4 ORACLE11G R2官档网址: http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc ...

随机推荐

  1. Linux 上安装 appium

    在linux 环境下安装需要以下几步:1.安装node.js, 通过  uname -a  命令查看到我的Linux系统位数是64位(备注:x86_64表示64位系统, i686 i386表示32位系 ...

  2. 笨方法学Python摘记(1)

    编程新手所需的最重要的三种技能:读和写.注重细节.发现不同 不要复制粘贴! #-*-codinig:utf-8 -*-  (脚本使用unicode UTF-8) 书写习惯:操作符的两边加上空格,提高代 ...

  3. laydate 只设置年月日,时分,不设置秒

    laydate.render({ elem: '#deadline_time' ,type: 'datetime' ,format: 'yyyy-MM-dd HH:mm' }); 设置了format, ...

  4. 永久解决Sublime包管理package control 打开install package报错 There are no packages available for installation

    很多用户在使用sumblime安装插件的时候,打开package control的install package会出现报错:There are no packages available for in ...

  5. 端口占用问题:java.net.BindException: Address already in use: bind

    解决方法 方法一:换一个端口 若仍然想要使用该端口,则可以将占用该端口的进程杀死即可. 方法二:杀死占用该端口的进程 若仍然想要使用该端口,则可以将占用该端口的进程杀死即可 查找端口被占用的进程id ...

  6. day29——socket套接字(少量不全)

    day29 socket套接字 socket是处于应用层与传输层之间的抽象层,他是一组操作起来非常简单的接口(接受数据)此接口接受数据之后,交由操作系统. 为什么存在socket抽象层? 如果直接与操 ...

  7. Python简介及开发环境搭建

    Python简介 Python是一门动态解释性的强类型定义的计算机程序设计语言,是一种完全面向对象的语言,由荷兰人"龟叔"-Guido van Rossum于1989年开发,于19 ...

  8. [LOJ2290] [THUWC2017] 随机二分图

    题目链接 LOJ:https://loj.ac/problem/2290 洛谷:https://www.luogu.org/problemnew/show/P4547 Solution 首先考虑只有第 ...

  9. Keyboard Purchase CodeForces - 1238E (状压)

    大意: 给定串$s$, 字符集为字母表前$m$个字符, 求一个$m$排列$pos$, 使得$\sum\limits_{i=2}^n|{pos}_{s_{i-1}}-{pos}_{s_{i}}|$最小. ...

  10. 可分离滤波器设计高斯滤波 CUDA程序优化, 实验记录

    环境:RTX2060 ,1920X1080p ,循环10次, kernal_size=8 一 .测试前128个线程拷贝到dst数据的性能  ,只测试行卷积, block=(128+2r)X1 1. 使 ...