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 (根据自己的实际配置,这里一定要先配置好,不然程序依旧会报错:ORA-12154: TNS: 无法解析指定的连接标识符)
step3. 安装好之后,在项目中重新引用Oracle.DataAccess.dll,注意选择上面安装的32位的客户端中的!然后就成了。
ps:没有卸载之前的64位客户端,所以目前是两个都有,这样在不同项目需求上可以选择引用不同的版本就行了。