Oracle.DataAccess.Client依赖项
首先,我想使用Oracle.DataAccess.dll
来使用OracleBulkCopy
。
我想知道我需要能够从数据库中读取的所有dll,然后在Oracle中执行批量复制。 目前,我们只使用一个dll来执行数据库的所有读取,我们使用的是Oracle.ManagedDataAccess.Client
。 但我不能用它来执行bulkCopy。
我不想为用户安装ODP.NET,我想直接在程序中包含dll。 所以我想知道能够在32位和64位中使用Oracle.DataAccess.dll
所需的最低dll。
我知道有一些关于这个的老post,但它很安静,列出的dll已经过时了。 我无法找到其中一些事件。
我为ODAC12安装了ODP.net,我在这篇文章中检索了所有列出的dll。 我也尝试过这篇文章 。 列出的dll指出版本11。
我做了一个虚拟项目,打开一个连接,读取一个表并在另一个表中进行批量处理。 我从项目根目录中的post中复制了列出的dll,并在项目中包含了Oracle.DataAccess.dll
。
当我以64位运行我的程序时,我收到以下错误:
无法加载文件或程序集’Oracle.DataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342′
当我以32位运行它时,我收到此错误:
无法加载DLL’OraOps12.dll’:找不到指定的模块。 (HRESULTexception:0x8007007E)“
我包括的dll是:
- OCI.DLL
- OCIW32.DLL
- Oracle.DataAccess.dll
- orannzsbb12.dll
- oraocci12.dll
- oraociei12.dll
- OraOps12.dll
我设法让它发挥作用。
-
下载适用于您的项目的优秀版ODAC。
-
对于32位项目,您需要下载ODAC12 …_ x32.zip(ODAC121021Xcopy_32bit.zip)。
-
对于64位项目,您需要下载ODAC12 … _ x64.zip
-
-
根据您想要的版本(32位对64位)将其解压缩到空文件夹中。
-
通过在Windows搜索栏中搜索* .dll,在
instantclient_12_1
文件夹中找到所有dll。 你需要抓住:
OCI.DLL
OCIW32.DLL
orannzsbb12.dll
oraociei12.dll
oraons.dll
- 根据你的.NET版本这两个dll找到
odp.net4
或odp.net20
文件夹:
OraOps12.dll
Oracle.DataAccess.dll
-
复制那些32位dll或64bit dll并将它们直接放在项目的Output路径中。 例如,在
C:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug
。 -
通过指向输出路径浏览项目中的Oracle.DataAccess.dll。
看起来您没有安装Oracle Instant Client(或任何其他版本的Oracle Client)。 这是非托管ODP.NET提供程序的先决条件。
安装Oracle Instant Client,你没事。 否则你只会遇到麻烦。
我遇到过类似的问题; 安装oracle数据访问组件(odac ODTwithODAC122010.zip )以获得解决方案。