基于oracle的java开发,使用VS开发基于Oracle程序的严重问题

基于Oracle开发时遇到

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

The Problem in english is:

"Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed"

具体环境是:

win2008  64

vs 2010

开发调试过程中都没有问题,一部署这个问题就来了。

然后经过一大堆改动,改装64位Client之后的结果是:

IIS测试都没有问题,一调试这个问题就来了。

最奇怪的是这两个错误都是同样的错误信息。

呵呵,两种情况都 让我碰到了,那就一起解决了他

我搞了整整两天才解决,网上有是有相关资料,但是都不全。具体原因也不明了.下面我来全面的讲述一下。

追根究底:

请看下图:

600c09be55c6f7cf0cb8d1f7e28e69b5.png

VS编译器调试过程用的并不是IIS来发布   而是用上面这个进程。我们可以看到,他明显是一个32位的。而IIS 7的进程w3wp是64 bit的。这就说明,如果我们在调试,那么我们的程序就在模拟32位运行,部署之后,确是模拟64位运行,让我最不能理解的是为什么一个是模拟32位运行,一个是模拟64位运行,而给我们的异常信息确实相同的呢?先不管这么多,至少现在这里我们可以得出一个结论:

如果你写的程序调试过程没有任何问题,那么你发布到64位IIS时就一定会有问题,反之则得到相反的结果。

解决方法如下:

情况一.调试过程没有任何问题,发布时出现问题

若调试没有任何问题,那么你肯定是使用32 bit oracle client 了,而服务器的IIS是64 bit的,所以需要发布网站的话,必须安装64 bit client

实际上,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\instantclient_11_1(这个部分也是必须的,根据实际情况的不同进行修改)。

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

之后重启操作系统(这个是必须的,我弄了一下午没有搞好,结果重启一下马上就好了),程序会依照PATH路径寻找oci.dll,如果遇到32位的oci.dll会自动略过,找到64位的oci.dll就能连接上数据库了。

情况二.调试过程出现问题,但是在IIS上测试没有问题

若IIS测试没有任何问题,那么你肯定使用的是64 bit oracle client 了,调试出错是因为调试的WebDev进程服务器是32bit的,为了模拟真实环境,你需要进行一些设置。

如果是这样的情况,那你就改VS的调试服务器吧,改成IIS就可以了。

0da546c36c733f82c9c9725974a9a811.png

到这里,我们可以下结论,Oracle 给的异常信息对于第一种情况来说是正确的,对于第二种情况则是错误的,意思刚好相反!!!可能是做本地化人员的一个粗心错误。

解决完这个问题之后,我的custom oracle  membership  for sharepoint的测试开发也就搞定了。近期还会记录一篇文章讲述custom oracle  membership  for sharepoint的开发总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Oracle数据库开发的项目源码是指使用Oracle数据库作为数据存储和管理的项目代码。源码中会包含对数据库的连接、数据读写操作以及与数据库相关的逻辑实现。 Oracle数据库是一款成熟、功能强大的关系型数据库管理系统,广泛应用于各种企业级应用和大型系统开发。基于Oracle数据库进行项目开发可以提供高性能、高可靠性和良好的数据管理能力。 在项目源码中,会包含与数据库连接相关的代码,例如使用JDBC或者Oracle提供的数据库连接库进行连接的代码。连接数据库是项目的基础,通过连接,项目可以与数据库进行交互。 源码中还会包含与数据库操作相关的代码,例如执行SQL语句的代码,通过SQL语句可以实现对数据库的查询、插入、更新、删除等操作。源码中还会包含一些数据操作相关的逻辑,例如数据校验、数据处理等。 除了基本的数据库操作,源码中还会包含一些与Oracle数据库特性相关的代码,例如事务管理、数据分页、并发控制等。这些代码可以提高系统的性能和数据的一致性。 总之,基于Oracle数据库开发的项目源码是一种使用Oracle数据库作为数据存储和管理的项目代码,其中包含了数据库连接、数据操作以及与数据库相关的逻辑实现。这些源码可以帮助开发人员了解和理解基于Oracle数据库项目的开发过程和实现细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值