首先,我想使用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是:
答案 0 :(得分:12)
我设法让它发挥作用。
下载适用于您项目的优秀版ODAC。
根据您想要的版本(32位对64位)将其解压缩到一个空文件夹中。
通过在Windows搜索栏中搜索* .dll,在instantclient_12_1
文件夹中找到所有dll。你需要抓住:
OCI.DLL
OCIW32.DLL
orannzsbb12.dll
oraociei12.dll
- 醇>
oraons.dll
odp.net4
或odp.net20
文件夹这两个dll:
OraOps12.dll
- 醇>
Oracle.DataAccess.dll
复制那些32位dll或64bit dll,并将它们直接放在项目的Output路径中。例如,在C:\...\vsProjects\BulkInsert\BulkInsert\bin\Debug
。
通过指向输出路径浏览项目中的Oracle.DataAccess.dll。
答案 1 :(得分:1)
我遇到过类似的问题;安装oracle数据访问组件(odac ODTwithODAC122010.zip )以获得解决方案。
答案 2 :(得分:0)
看起来您没有安装Oracle Instant Client(或任何其他版本的Oracle Client)。这是非托管ODP.NET提供程序的先决条件。
安装Oracle Instant Client,你没事。否则你只会遇到麻烦。