有没有办法在不安装Oracle客户端的情况下使用Qt OCI驱动程序?在构建驱动程序时,可能使用Oracle的静态库?或者使用一些Oracle客户端dll和一些env变量设置?
问题是我不能要求我的客户在使用我的应用程序之前安装oracle客户端。他们希望我的应用程序能够毫无困难地启动和运行。
如果无法实现这一点,那么我们还有什么替代方案?
答案 0 :(得分:1)
如果有人对此感兴趣,我是如何做到的。
o_Database.setHostName("10.10.10.225");
o_Database.setPort(1521);
o_Database.setDatabaseName("ora11g");
同时,分发Oracle即时客户端DLL是合法的。
答案 1 :(得分:0)
你想要达到什么目的?您的意图纯粹是技术性的,还是您在许可方面遇到问题? (Oracle不允许重新分发OCI库)。您使用的操作系统是什么?
在Linux / AIX上,理论上你可以创建自己的"静态" OCI库的版本。动态的一个叫做libclntsh(sh代表共享)。静态的libclntst至少可以使用Oracle的makefile手动构建。 然后,您可以在应用程序中技术上嵌入此静态库。您可能有一些缺少的符号(例如__fast_memcpy_A)。这是因为Oracle是使用英特尔的ICC编译器编译的,并且您还添加了一些ICC运行库的静态版本。
您还可以查看项目Tora。用户必须手动下载OCI库,并将所有特定于Oracle的特定代码放入单独的插件中。
更新:AFAIK Oracle不允许重新分发OCI.DLL,除非您是Oracle业务合作伙伴(或者现在这样称呼它)。
如果是Windows平台,您可以使用:
Microsoft的Oracle ODBC驱动程序。它应该存在于每个Windows安装中。但是这个很老,并且不支持更新的数据类型(比如LOB),也许它也不支持一些字符集。
一些第三方oci-like司机。但AFAIK只适用于C#。
使用某些应用程序服务器,而不是使用客户端应用程序的直接数据库连接
编写自己的驱动程序。请参阅Pythian。