Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle ODP.NET版本不可知替代方案_.net_Oracle - Fatal编程技术网

Oracle ODP.NET版本不可知替代方案

Oracle ODP.NET版本不可知替代方案,.net,oracle,.net,Oracle,我正在实现一个x64应用程序,连接到Oracle 我应该使用什么驱动程序,以确保用户安装的客户端版本无关紧要 因此,现在我正在使用x64和x86 ODP.NET驱动程序构建我的版本,但我担心当用户安装了旧/新版本的Oracle客户端(ODP.NET)时,这将不起作用 我应该转向OleDB或System.DataAccess驱动程序来避免这个问题,还是根本不会有问题 PS:我以前使用ODBC驱动程序,但是x64上有已知的错误,所以这不是一个选项。哦,Oracle的“乐趣”。。。 好的,基本上,我从

我正在实现一个x64应用程序,连接到Oracle

我应该使用什么驱动程序,以确保用户安装的客户端版本无关紧要

因此,现在我正在使用x64和x86 ODP.NET驱动程序构建我的版本,但我担心当用户安装了旧/新版本的Oracle客户端(ODP.NET)时,这将不起作用

我应该转向OleDB或System.DataAccess驱动程序来避免这个问题,还是根本不会有问题

PS:我以前使用ODBC驱动程序,但是x64上有已知的错误,所以这不是一个选项。

哦,Oracle的“乐趣”。。。 好的,基本上,我从来没有为x64版本烦恼过,我只是专门为32位编译了我的程序,所以如果这是一个困难的要求,并不是所有的东西都适用于你

但我得到版本不可知论的原因是不使用任何客户端安装的驱动程序;相反,我在我的应用程序目录中部署了Oracle Instant Client库和ODP二进制文件;如果可以访问,ODP将使用OCI(即时客户端)文件。这是最简单的解决方法,我很高兴我这么容易就解决了它,尽管这方面的信息并不容易获取

对于当前版本(至少在我上次构建应用程序时是最新版本)、11g,ODP和OCI的结合确保了与9-11版本的兼容性

现在,当然,OCI是相当大的(如果内存可用的话,只有英文版的版本较小,只有35MB),但我不得不接受它(部署对我来说不是什么大问题)。除此之外,我还依赖于一个已经有50 ish MB的库——大部分是XML序列化程序集!不要让我开始


希望这有帮助

恐怕这行不通。无论您使用何种驱动程序,都会在同一进程中直接或间接使用本机OCI.DLL。在您的情况下,它必须是64位版本。因此,您的应用程序无法使用32位OCI.DLL

要解决此问题,您有两个选项:

  • 编写一个单独的32位应用程序,负责访问Oracle并以某种方式与该应用程序通信

  • 嵌入64位版本的Java VM,并通过OJDBC(唯一独立于OCI.DLL的选项)访问Oracle


  • 但我想,这些都不是很现实的选择。

    这是个好主意。我自己也用过一次(但没有ODP)。遗憾的是,在Java中,您只需添加ojdbc6.jar(2兆字节)即可连接到Oracle,而在C或C中,您需要一个50兆字节以上的复杂设置。我不明白为什么Oracle不能像Java那样为C/C服务。所以,所有面向Oracle的驱动程序都使用Oracle客户端,并且依赖于版本?除了常规ODBC驱动程序(在x64中不起作用)之外,没有其他驱动程序使用ODBC吗?事实上,Oracle的乐趣在于:x64和x86的组合不是问题。我只是想知道如何独立于客户端版本。因此,如果用户决定升级其Oracle客户端,我的应用程序将不会崩溃……Oracle似乎已经在这方面采取了一致行动,请参阅