当前位置:编程学习 > C#/ASP.NET >>

win2008 x64 下安装oracle 10g 32位。vs2008 无法连接上数据库?


现象如下:
在win2008 x64 下安装oracle 10g 32位。vs2008 无法连接上数据库。提示无法解析连接字符串。

在win2008 x64服务器上用oracle 的监听程序配置测试连接成功,但是用vs2008的连接数据服务就无法连接数据库了,提示无法解析连接字符串,自己编写的程序也无法连接上数据库了。


在win7 x86系统上连接win2008 x64 服务器上的oracle 10g 32位数据库成功,自己编写的应用程序也正常。

我该怎样解决这个问题:比较省事的解决方法有哪些,望指点!

--------------------编程问答-------------------- 本机连接有问题吗? --------------------编程问答-------------------- 检查下 连接字符串。。 --------------------编程问答-------------------- ado动态库版本问题 --------------------编程问答-------------------- 服务器本机,用vs2008就无法连接数据库! --------------------编程问答-------------------- 在服务器本机,用oracle配置监听程序的工具测试是能连通的,用vs2008去连接就提示无法解析连接字符串。
在其他32位的电脑上用vs2008连接数据库,能连通,程序也能连通。 --------------------编程问答-------------------- 如何在安装32位Oracle客户端组件的情况下以64位模式运行

本来这个问题我在用vs2005开发的时候没有出现,但今天用database2sharp工具的时候连接失败,经过搜索查询,现在总结一下解决方法,一来以便以后查阅,二来希望能够对大家有所帮助。

C#使用System.Data.OracleClient连接Oracle数据库。之前在WinXP上正常运行的程序移植到Windows 2008 x64上之后就连不上数据库了,错误信息如下:

启动database2sharp工具时提示:

数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。

错误原因是原来WinXP机子上所安装的OracleInstantClient是32位,所以编译的程序所用的OracleClient也是32位的,从而导致兼容问题。当然,如果在64位操作系统上重新安装64位的Oracle客户端再重新编译程序也是能解决问题的。这里我们介绍一种简单的方法来移植程序。

实际上,System.Data.OracleClient所指向的是PATH环境变量下的oci.dll。因此,我们只要让程序能够找到64位的oci.dll就可以了。方法如下:

1. 下载instantclient-basic-win-x86-64-11.1.0.7.0.zip,并解压,如C:\instantclient-basic-win-x86-64-11.1。

2. 在系统的环境变量PATH中加入以上路径。

之后再运行程序,程序会依照PATH路径寻找oci.dll,如果遇到32位的oci.dll会自动略过,找到64位的oci.dll就能连接上数据库了。
注:转载某大神的博客,忘记地址了 --------------------编程问答-------------------- instantclient-basic-win-x86-64-11.1.0.7.0.zip --这个要去oracle官网去下 自己找找 --------------------编程问答-------------------- 64位和32位的客户端都要安装,避免程序选择上出现不一样,编译选项为any cpu的程序,到64位系统上只能识别64位客户端,编译选项为x86的程序,到64位系统上只能识别32位客户端,最后就是dll的版本号问题,自己注意调整,配置文件里可以修改版本号映射的。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,