如果你的机器上安装了odp.net,且确信machine.config也有类似以下结节:(64位+.net 4.0环境下,machine.config可能会有4份,分别对应于.net2.0/4.0的32/64位版本,要每个都检查过去哦)?

type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral,

PublicKeyToken=89b483f429c47342"/>

4.0的machine.config中类似下面这样:

type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.2.0,

Culture=neutral, PublicKeyToken=89b483f429c47342" />

如果碰巧您又在用64位的操作系统(比如win2008 r2),开发工具又是最先进的vs.net 2010 sp1,但是死活在代码就是连接不上oracle,一直报一些奇怪的错误:比如“Data Provider找不到”啦,“Oracle.DataAccess.Client无法加载”啦之类,正在一筹莫展大声咆哮:“天理,有木有啊,有木有!”之时,恭喜你,多半是遇到了x64/x64的版本问题。(我今天花了近一上午的时间才弄明白问题所在)odp.net安装后,默认会在GAC中部署程序集Oracle.DataAccess,如果你安装的是x86版本,GAC中的就是x86;如果你安装的x64版本,GAC中的就是AMD64版本。 检测本机GAC中是否有Oracle.DataAccess程序集并查看版本的方法如下:在vs.net命名行窗口下,输入gacutil.exe /l Oracle.DataAccess如果看到类似下面的结果:D:\app\x86\Microsoft Visual Studio 10.0\VC>gacutil.exe /l Oracle.DataAccessMicrosoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1

Copyright (c) Microsoft Corporation.  All rights reserved.The Global Assembly Cache contains the following assemblies:

Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64

Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86

Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64

Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86Number of items = 4

表明你的机器上安装了4个版本的Oracle.DataAccess,分别对应于.net 2.0以及.net 4.0的32位/64位版本而且在C:\Windows\assembly 目录下也能看到x86与AMD64位

注:在资源管理器里,只能看到2.112.2.0的x86/AMD64版本,看不到4.112.2.0版本的任何东东(不知道是不是我的个别现象,也有可能另外的版本在其它地方,我没找到)如果缺少相关的版本,可以先到oracle官网download,下面以64位odp.net为例:1、下载完成后,将其解压到某个目录,比如E:\software\oracle11g\ODP.Net,然后键入以下命令:

E:\software\oracle11g\ODP.Net\x64>install.bat all c:\odp.net myhome (install all components)

上述命令将自动把所有文件复制到c:\odp.net下2、然后转到c:\odp.net下,键入命令:

c:\odp.net>configure.bat all myhome (configure all component)将自动向GAC中部署相应的程序集.然后在vs2010里,添加引用时,应该就能看到Oracle.DataAccess的二个版本

注:在这个界面上,只能看到2.112.2.0与4.112.2.0二个版本号,体现不出x86/x64的区别。贴一段示例代码:using System;

using Oracle.DataAccess.Client;

namespace test

{

class Program

{

static void Main(string[] args)

{

//建议用这种风格的连接字符串,可以不用依赖于listener.ora文件中的配置

string _connString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));User Id=scott;Password=tiger;";

using (OracleConnection conn = new OracleConnection(_connString))

{

string sql = "select * from emp t where mgr=:mgr";

OracleCommand cmd = new OracleCommand(sql, conn);

conn.Open();

cmd.Parameters.Add(new OracleParameter() { ParameterName="mgr",Value="7839" });

OracleDataReader dr =  cmd.ExecuteReader();

while (dr.Read())

{

Console.WriteLine("empno:{0},ename:{1},mgr:{2}", dr["empno"], dr["ename"],dr["mgr"]);

}

dr.Close();

}

Console.Read();

}

}

}

总之一句话:要跑64位的.Net程序,就必须用64位的odp.net,要跑32位的.Net程序,就必须用32位的odp.net,且machine.config中要有相应的provider节点。

oracle odp版本,oracle odp.net 32位/64位版本的问题相关推荐

  1. js 判断电脑操作系统版本以及判断是32还是64位

    /*检测系统版本*********************************************/ function  getVersion(){ var version = navigat ...

  2. 计算机win7几位,Win7 32位与64位有什么区别 Win7系统32位和64位的区别科普篇

    Win7系统分32位和64位版本,很多人在选择32位和64位系统的时候十分纠结,原因是自己的电脑应该安装哪一种版本,那么Win7 32位与64位有什么区别,下面装机之家分享一下Win7系统32位和64 ...

  3. oracle client 11.2.0.3 32位,oracle client 32位/64位下载(Oracl数据库)

    今天给大家推荐的这款oracle client软件是一款功能丰富的数据库管理系统,支持32位/64位系统,用户可以通过该Oracl数据库工具执行OCI.OCCI.PRO*C.ODBC和JDBC程序,o ...

  4. 【Android 逆向】IDA 工具使用 ( IDA 32 位 / 64 位 版本 | 汇编代码视图 IDA View-A | 字符串窗口 Strings window )

    文章目录 一.IDA 32 位 / 64 位 版本 二.汇编代码视图 IDA View-A 三.字符串窗口 Strings window 一.IDA 32 位 / 64 位 版本 IDA 安装完毕后 ...

  5. 32位/64位WIN2003各版本支持内存列表 彻底解决XP系统无法支持4G内存的问题

    WIDOWS2003各版本支持内存简表 版本  支持CPU数量  支持最大内存  32位 Windows Server 2003, Standard Edition (标准版)  2路  4G  32 ...

  6. 如何检查Windows Vista , XP和2003系统是32位或64位( x86或x64 )版本

    您可能会收到一个电脑作为礼物,以及想要找出系统是否设置了一个32位或64位(微软标签,他们作为x86或x64 )为基础的作业系统,这需要特别建造的应用软件. ) . For computer or P ...

  7. 如何判断您是否拥有32位或64位版本的Google Chrome浏览器

    Google Chrome is extremely popular with our readers, but did you know that they also have a 64-bit v ...

  8. 图解无约而来Win7 33in1 V1.3 32位与64位合一(版本齐全装机利器)

    图解无约而来Win7 33in1 V1.3 32位与64位合一(版本齐全装机利器) 2012-07-17 11:32:31|  分类: 默认分类 |  标签: |字号大中小 订阅 无约而来近日发布了将 ...

  9. 32位怎么兼容64位java_Java 32位与64位兼容

    是的,假设您使用独立于平台的库,Java字节码(和源代码)是独立于平台的. 32与64位应该没有关系. 我不小心在一个64位的虚拟机上运行我们的(大的)应用程序,而不是一个32位的虚拟机,直到一些外部 ...

最新文章

  1. linux 如何切换jdk的版本
  2. h5跳转小程序页面url_web-view h5跳转到小程序页面,无法跳转?
  3. aud to php,HKD to PHP
  4. tp快捷路径 __URL__和__APP__
  5. Python一键生成国庆出行攻略,助你出门远游嗨不停!
  6. 三星电子与索尼在CMOS图像传感器市场份额差距缩小
  7. 解决ssh链接服务器长时间不操作出现掉线问题
  8. 实例标识助力您的应用迁上云端
  9. SpringBoot指南(二)——常用注解及操作
  10. 224秒!ImageNet上训练ResNet-50最佳战绩出炉,索尼下血本破纪录
  11. [PCB设计] 1、硬件原理图设计规范(一)——基本原则
  12. 操作系统原理(五)存储管理
  13. 历史 微信开发者工具_微信开发者工具-微信开发者工具下载 v1.03.2011120官方版--pc6下载站...
  14. lzg_ad: FBWF配置详解
  15. vscode搭建c++开发环境
  16. UOS安装 MySQL5.7
  17. 今天我们来聊聊,如何做好第三方系统对接
  18. ENVI:如何进行遥感图像的分类?(决策树模型)
  19. python自制小游戏_教你用Python自制拼图小游戏,一起来制作吧
  20. N76E003模拟EEPROM读取和保存应用配置

热门文章

  1. 辅助驾驶功能开发-功能对标篇(18)-NCA城市辅助系统-华为
  2. 【线性回归——从简单构建到实现数据预测】
  3. chatgpt写程序-python小游戏-2048-pygame
  4. [思维模式-18]:《复盘》-6- “行”篇 - 操作复盘- 经营与战略复盘
  5. Android视频开发进阶(part1-关于视频的那些术语)
  6. WPF下的语法高亮控件——AvalonEdit
  7. 开心一刻丨程序员,才是真正的段子手
  8. 记录每天学习的新知识:MotionEvent
  9. 湖南大学2022年计算机考研复试时间
  10. AutoLisp从入门到放弃(十一)