C#使用Oracle.ManagedDataAccess.dll组件连接Oracle数据库
作者:springsnow 发布时间:2024-01-27 23:55:45
一、概述
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文件)
<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
猜你喜欢
- 有的时候,一个 if … else … 还不够用。比如,根据年龄的划分:条件1:18岁或以上:adult条件2:6岁或以上:teenager
- 本文实例讲述了Java常用正则表达式验证类。分享给大家供大家参考,具体如下:package com.fsti.icop.util.regex
- 本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下项目环境: 软件环境: &
- 多线程:在同一个时间做多件事守护线程:如果在程序中将子线程设置为守护线程,则该子线程会在主线程结束时自动退出,设置方式为thread.set
- 很多人可能发现,无论是在sql 2000, 还是在 sql 2005 中,都没有提供字符串的聚合函数, 所以, 当我们在处理下列要求时,会比
- 本文实例讲述了Python 操作 PostgreSQL 数据库。分享给大家供大家参考,具体如下:我使用的是 Python 3.7.0Post
- Python官方文档给出的解释是id(object)Return the “identity” of an object. This is
- 本文实例讲述了Python实现的各种常见分布算法。分享给大家供大家参考,具体如下:#-*- encoding:utf-8 -*-import
- 简介在廖雪峰的python网站上,他是这么说的python是动态语言,它允许程序在执行过程中动态绑定属性或者方法(使用MethodTpye)
- 基本函数如下:/// <summary> /// 需要分页时使用,根据参数和ConditionExpress获取DataTabl
- 背景小程序在网络层提供的API是能够完成一个程序与服务端交互的完整链路,但需要大量的定制化代码,才能实现请求拦截和响应拦截,不太符合大多数开
- <?php//php需要开启ssl(OpenSSL)支持$apnsCert = "ck.
- 不管学习什么编程语言一开始都会经历的四步开发工具安装IDE安装设置 依赖/包 国内镜像项目构建工具,管理依赖/包一、Golang 开发工具安
- 如下所示:import pandas as pdcontent = ['T', 'F'] * 10data
- PHP PDO 预处理语句与存储过程很多更成熟的数据库都支持预处理语句的概念。什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译
- MybatisPlus 是一款在 Mybatis 基础上进行的增强 orm 框架,可以实现不写 sql 就完成数据库相关的操作。普通的 ma
- 二维正态分布采样后,绘制置信椭圆假设二维正态分布表示为:下图为两个二维高斯分布采样后的置信椭圆和每个二维高斯分布采样100个数据点,图片为:
- 使用Access数据库生成申报数据与读入数据的实例方法:示例:Sub Mwrite()On Error GoTo thiserrDim rs
- 简单的header import urllib2request = urllib2.Request('http://example.
- 微信小程序中的下拉刷新,上拉加载的功能很常见,目前我知道的有两种可行的方法,一是scroll-view,二是整个页面刷新.今天说说第一种,自