1、Oracle服務端爲64位,則連接客戶端也只能爲64位?
2、既然客戶端需要64位,那c#程序引用dll是否也需要是64位?
3、c#應用程序爲32位,又如何使用64位dll?
4、是否只能替換Oracle服務端爲64位來解決?
亂搞 解決了!
問題描述:c#32位桌面程序,使用Oracle.DataAccess.dll 做連接驅動,但是Oracle服務端爲64位,客戶端位64位,導致桌面應用無法連接到數據庫。
起初以爲64位電腦無法裝32位Oracle客戶端,而且還以爲32位客戶端不能連接64位服務器… 蠢得一批!
解決方法:
step1. 安裝一個與服務器同版本的32位客戶端,這裏如果提示安裝不兼容,可以修改下圖中的兩個文件來兼容win10,並使用兼容模式加管理員身份安裝
在兩個文件中的 <CERTIFIED_SYSTEMS></CERTIFIED_SYSTEMS>
標籤中加入如下代碼:
<OPERATING_SYSTEM RELEASE="6.2">
<VERSION VALUE="3"/>
<ARCHITECTURE VALUE="32-bit"/>
<NAME VALUE="Windows 10"/>
<ENV_VAR_LIST>
<ENV_VAR NAME="PATH" MAX_LENGTH="1023" />
</ENV_VAR_LIST>
</OPERATING_SYSTEM>
step2. 配置好客戶端的net manager (根據自己的實際配置)
step3. 安裝好之後,在項目中重新引用Oracle.DataAccess.dll,注意選擇上面安裝的32位的客戶端中的!然後就成了。
ps:沒有卸載之前的64位客戶端,所以目前是兩個都有,這樣在不同項目需求上可以選擇引用不同的版本就行了。