Oracle.DataAccess.Client依赖项

时间:2015-11-03 21:24:13

标签: c# .net oracle dll odp.net

首先,我想使用Oracle.DataAccess.dll来使用OracleBulkCopy

我想知道我需要能够从数据库中读取所有dll,然后在Oracle中执行批量复制。目前,我们只使用一个dll来执行数据库的所有读取,我们正在使用Oracle.ManagedDataAccess.Client。但我不能用它来执行bulkCopy。

我不想为用户安装ODP.NET,我想直接在程序中包含dll。所以我想知道能够在32位和64位中使用Oracle.DataAccess.dll所需的最低dll。

我知道有一些关于此事的老帖子,但它已经过时了,列出的dll已经过时了。我无法找到其中的一些。

我为ODAC12安装了ODP.net,并且我在此post中检索了所有列出的dll。我也试过这个post。列出的dll指出版本11。

我做了一个虚拟项目,打开一个连接,读取一个表并在另一个表中批量处理它。我从项目根目录中的帖子中复制了列出的dll,并在项目中包含了Oracle.DataAccess.dll

当我以64位运行程序时,出现以下错误:

  

无法加载文件或程序集'Oracle.DataAccess,Version = 4.121.2.0,   Culture = neutral,PublicKeyToken = 89b483f429c47342'

当我以32位运行时,我收到此错误:

  

无法加载DLL'OraOps12.dll':指定的模块无法加载   找到。 (HRESULT异常:0x8007007E)“

我包含的dll是:

  • OCI.DLL
  • OCIW32.DLL
  • Oracle.DataAccess.dll
  • orannzsbb12.dll
  • oraocci12.dll
  • oraociei12.dll
  • OraOps12.dll

3 个答案:

答案 0 :(得分:12)

我设法让它发挥作用。

  • 下载适用于您项目的优秀版ODAC。

    1. 对于32bit项目,您需要下载ODAC12 ..._ x32.zip(ODAC121021Xcopy_32bit.zip)。

    2. 对于64bit项目,您需要下载ODAC12 ..._ x64.zip

  • 根据您想要的版本(32位对64位)将其解压缩到一个空文件夹中。

  • 通过在Windows搜索栏中搜索* .dll,在instantclient_12_1文件夹中找到所有dll。你需要抓住:

  
      
  1. OCI.DLL

  2.   
  3. OCIW32.DLL

  4.   
  5. orannzsbb12.dll

  6.   
  7. oraociei12.dll

  8.   
  9. oraons.dll

  10.   
  • 根据您的.NET版本找到odp.net4odp.net20文件夹这两个dll:
  
      
  1. OraOps12.dll

  2.   
  3. Oracle.DataAccess.dll

  4.   
  • 复制那些32位dll或64bit dll,并将它们直接放在项目的Output路径中。例如,在C:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug

  • 通过指向输出路径浏览项目中的Oracle.DataAccess.dll。

enter image description here

答案 1 :(得分:1)

我遇到过类似的问题;安装oracle数据访问组件(odac ODTwithODAC122010.zip )以获得解决方案。

答案 2 :(得分:0)

看起来您没有安装Oracle Instant Client(或任何其他版本的Oracle Client)。这是非托管ODP.NET提供程序的先决条件。

安装Oracle Instant Client,你没事。否则你只会遇到麻烦。