[英]Oracle.DataAccess.Client Dependencies
首先,我想使用Oracle.DataAccess.dll
來使用OracleBulkCopy
。
我想知道我需要能夠從數據庫中讀取然后在 Oracle 中執行批量復制的所有 dll。 目前,我們只使用一個 dll 來執行從數據庫的所有讀取,我們使用的是Oracle.ManagedDataAccess.Client
。 但我不能用它來執行批量復制。
我不想為用戶安裝ODP.NET,我想直接在程序中包含dll。 所以我想知道能夠在 32 位和 64 位中使用Oracle.DataAccess.dll
所需的最低 dll。
我知道有一些關於此的舊帖子,但它很舊,而且列出的 dll 已過時。 我無法找到其中一些。
我為 ODAC12 安裝了 ODP.net,並檢索了這篇文章中列出的所有 dll。 我也嘗試過這篇文章。 列出的 dll 指出版本 11。
我做了一個虛擬項目,它打開一個連接,讀取一個表並將其批量放入另一個表中。 我從項目根目錄的帖子中復制了列出的 dll,並在項目中包含了Oracle.DataAccess.dll
。
當我以 64 位運行程序時,出現以下錯誤:
無法加載文件或程序集“Oracle.DataAccess,版本=4.121.2.0,文化=中性,PublicKeyToken=89b483f429c47342”
當我以 32 位運行它時,出現此錯誤:
無法加載 DLL 'OraOps12.dll':找不到指定的模塊。 (來自 HRESULT 的異常:0x8007007E)”
我包含的dll是:
我設法讓它工作。
根據您想要的版本(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 或 64 位 dll 並將它們直接放在項目的輸出路徑中。 例如在C:\\...\\vsProjects\\BulkInsert\\BulkInsert\\bin\\Debug
。
通過指向輸出路徑瀏覽項目中的 Oracle.DataAccess.dll。
UPD:最新版本的 ODP.NET 提供程序(從此處下載)在其文件名中有“19”后綴而不是“12”:
oci.dll
ociw32.dll
orannzsbb19.dll
oraociei19.dll
oraons.dll
OraOps19.dll
Oracle.DataAccess.dll
我遇到過類似的問題; 安裝 oracle 數據訪問組件 (odac ODTwithODAC122010.zip ) 以獲取解決方案。
看起來您沒有安裝 Oracle Instant 客戶端(或任何其他版本的 Oracle 客戶端)。 這是非托管 ODP.NET 提供程序的先決條件。
安裝 Oracle Instant 客戶端就可以了。 否則你只會遇到麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.