http://blog.csdn.net/educast/article/details/6605655

Oracle.DataAccess.dll有2.X版本和4.X版本,VS2008开发用2.X

所需的DLL可以从已安装的client中拷

由于微软在.net framework4中会将System.Data.OracleClient.dll deprecated,而且就访问效率和速度而言,System.Data.OracleClient.dll与 Oracle.DataAccess.dll相比,微软的确实没有oracle提供的类库有优势,所以我放弃了使用多年的 System.Data.OracleClient.dll,取而代之的是odp.net。然而odp .net 的优点不止这些,还包括:

1、不在安装客户端也能访问服务器上的oracle(假设Application Server与DB Server 分开)

2、不需要配置TnsNames.Ora文件

当然,我选择odp .net的最主要的原因还是性能。这篇文章列举了两者之间的对比。Technical Comparison: ODP .NET Versus Microsoft OracleClient
下面我将介绍如何在一个在新的项目中使用odp .net。环境配置:A机器,运行C#程序,没有安装oracle数据库或者客户端等任何oracle的产品;B机器就运行着一个oracle9i数据库,再没安装过其它oracle产品

首先要下载odp .net文件,可以在这个页面下载Oracle Data Access Components (ODAC) Downloads ,我下载的是Oracle 11g ODAC 11.1.0.7.20 with Oracle Developer Tools for Visual Studio这个版本。

下载完成之后不用安装,将Oracle.DataAccess.dll文件从 ODTwithODAC1110720.zip/stage/Components/oracle.ntoledb.odp _net_2/11.1.0.7.10/1/DataFiles/filegroup4.jar文件中解压出来就行,然后复制到项目中,再添加引用Oracle.DataAccess.dll。
编写如下代码:

using Oracle.DataAccess.Client;

...

string connstring =

"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1527))" +

"(CONNECT_DATA=(SID=orcl)));User Id=sys;Password=sys;" ; //这个也可以放到Web.Config中。

using (OracleConnection conn = new OracleConnection(connstring))

{

conn.Open();

string sql = "select * from users" ;

using (OracleCommand comm = new OracleCommand(sql, conn))

{

using (OracleDataReader rdr = comm.ExecuteReader())

{

while (rdr.Read())

{

Console.WriteLine(rdr.GetString(0));

}

}

}

}

代码编写好以后,还要从下载的压缩包中取出几个dll文件。
1、oci.dll (在jar文件里面叫’oci.dll.dbl’,拿出来之后去掉.dbl in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup2.jar)
2、oraociicus11.dll (in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.ic/11.1.0.7.0/1/DataFiles/filegroup3.jar)
3、OraOps11w.dll (in ODTwithODAC1110720.zip/stage/Components/ oracle.ntoledb.odp _net_2/11.1.0.7.10/1/DataFiles/filegroup3.jar)

下面这三个有人说需要,有人说不需要,反正也不差这三个,继续吧:
4、orannzsbb11.dll (in ODTwithODAC1110720.zip/stage/Components/oracle.ldap.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup1.jar)
5、oraocci11.dll (in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup3.jar)
6、ociw32.dll (在jar文件里面叫’ociw32.dll.dbl’,拿出来之后去掉.dbl in ODTwithODAC1110720.zip/stage/Components/ oracle.rdbms.rsf.ic/11.1.0.7.0/1/DataFiles/filegroup2.jar)
最后把这个DLL复制到项目中,CS的要与exe一个文件夹,B/S的有专门的bin目录。

当然,使用一项新技术,必然会遇到一些错误:以下是我遇到的:

1、运行的时候遇到这个异常提示’The provider is not compatible with the version of Oracle client’,不要紧张,检查一下上面所用到的dll是否齐全就OK。

2、“找不到请求的 .Net Framework 数据提供程序。可能没有安装。”这个错误提示是因为在machine.config中找不到Oracle.DataAccess.dll,将下面的代码放到

< DbProviderFactories ></ DbProviderFactories >

之间就OK。

< add name = "Oracle Data Provider for .NET" invariant = "Oracle.DataAccess.Client" description = "Oracle Data Provider for .NET" type = "Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />

注:如果下载的不是ODTwithODAC1110720,有可能 dll的位置不像是上面提到的那样,需要自己去挨个找了

Client使用c#和odp.net连接server oracle的更多相关文章

  1. PL SQL Developer client 连接server

    安装完Oracle,PLSQL之后,在server中打开监听. 计算机右键-管理-服务和应用程序-服务-打开以Oracle开头的服务,特别是监听,这个最重要.详细如图所看到的. (1)配置监听的位置 ...

  2. Oracle ODP.NET连接池

    数据库连接池 连接池是数据库连接的缓存,每当应用程序需要连接数据库时向连接池申请数据库连接,连接池负责具体数据库连接的创建和销毁.连接池中的数据库连接会缓存一段时间,后续的连接请求首先使用缓存中的数据 ...

  3. win8下在microsoft visual studio 2012利用ODP.NET连接ORACLE 12c

    老板要求我搭个ASP.NET框架,并且连接上ORACLE数据库,听起来好像挺简单的,但就是连第一步连接ORACLE我都搞了两天╮(╯▽╰)╭ 首先,项目书上要求用ORACLE 10G,可我自己的本本装 ...

  4. Use Node.js DDP Client on Arduino Yun to Access Meteor Server

    Use Node.js DDP Client on Arduino Yun to Access Meteor Server 概述 在Arduino Yun上安装 Node.js, 并測试与 Meteo ...

  5. odp.net连接方式,部署问题总结

      一. 摘要 在C#开发的过程中,经常需要操作Oracle数据库,而实际在部署程序的时候,经常要根据系统环境(32.64bit).不安装Oracle客户端等等需求,而Odp.net 也没有完美兼容的 ...

  6. 配置PL/SQL Developer连接server数据库

    配置PL/SQL Developer连接server数据库 远程应用server上安装client客户端软件,可在oracle官网上下载. 举例: 环境 应用server操作系统 WIN 7 本地地址 ...

  7. CRT远程连接server字符输出乱码解决一例

    CRT远程连接server字符输出乱码解决一例 环境: server:Centos 6.2 远端:win 7 CRT版本号:7.1.1 现象回想: 1.server端:中文字符显示正常,例如以下: 2 ...

  8. plsql oracle client没有正确安装(plsql连接远程数据库)

      plsql oracle client没有正确安装(plsql连接远程数据库) CreateTime--2018年4月23日16:55:11 Author:Marydon 1.情景再现 2.问题解 ...

  9. 粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers

    Module ngx_http_upstream_module http://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky S ...

随机推荐

  1. Python3简明教程(一)—— 开始Python之旅

    第一个Python程序 作为我们第一个Python程序——打印"Hello  World!". 在终端输入Python3进入交互界面: 输入print("Hello  W ...

  2. dmesg -检测和控制内核环缓冲

    NAME dmesg - print or control the kernel ring buffer 总览 dmesg [ -c ] [ -n 级别 ] [ -s 缓冲区大小 ] 描述 dmesg ...

  3. 细说PHP-5.4 变量的类型

    变量类型是指保存在该变量中的数据类型.计算机操作的对象是数据在计算编程语言世界里,每一个数据也都有它的类型,具有相同类型的数据才能彼此操作.例如书柜是装书用的.大衣柜是放衣服用的.保险柜是存放贵重物品 ...

  4. Asp.Net Core 入门(二)——Startup.cs做了什么

    上篇介绍了Program.cs中Main做了什么,这篇我们来讨论下Startup.cs它又做了什么呢? 我们新建一个Asp.Net Core Mvc项目,先来开一下Startup的代码 public ...

  5. Spring框架针对dao层的jdbcTemplate操作之jdbc数据库连接原始操作方法 所需安装包下载

    crud指数据库或者持久层的基本操作,包括 增加(Create).读取查询(Retrieve 取回).更新(Update)和删除(Delete) Spring不仅对JDBC进行了封装,也对Hibern ...

  6. MyBatis的动态sql小练习,小回顾

    关键字if+trim trim可以去除多余的关键字,是where和set的组合 trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: <trim prefix=& ...

  7. linux下使用docker方式部署ftp服务器

    linux环境下部署vsftpd比较繁琐,可以直接使用docker官方仓库中的pure-ftpd镜像来部署ftp服务器. 下载镜像 docker pull stilliard/pure-ftpd:ha ...

  8. ubuntu修改网卡名称ensX为eth0

    1.sudo nano /etc/default/grub 找到GRUB_CMDLINE_LINUX="" 改为GRUB_CMDLINE_LINUX="net.ifnam ...

  9. Django框架基础知识13-auth系统

    我们昨天登录admin时创建的用户信息是存放在哪里了呢? auth系统的数据表: 从表的名称我们就能看出, auth_user,auth_group,auth_permission分别存放了用户,用户 ...

  10. Spring MVC 接入 rabbitMQ

    依赖包 <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spr ...