终于编译好了qt的oracle驱动QOCI,连接driver not loaded解决方法

本文介绍了解决Qt应用程序中QOCI Oracle驱动未能加载的问题。主要通过两种方法实现:一是修改系统的环境变量,二是使用Qt库手动加载oci.dll。此外还提供了针对Windows 7系统的一个常见登录错误解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  我想你和我一样,照着终于编译好了qt的oracle驱动QOCI,连接成功!!!

  一文编译了QOCI,我目前遇到下面错误:(代码我直接用原文的)

QSqlDatabase: QOCI driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
error_Oracle:
 "Driver not loaded Driver not loaded"

  解决这个问题就得从原理上说:

  thin是纯java实现tcp/ip的c/s通讯;而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装(从oracle10.1.0开始,单独提供OCI Instant Client,不用再完整的安装client)


  很多时候我们都考虑我们编译的$QTDIR/plugins/sqldrivers 下DLL 是否正确加载,而忽略Oracle那边的库是否加载。

  那么问题解决方法就是 

  方法1、在系统Path 就是环境变量中添加 你的Oracle oci.dll库位置 C:\oracle\product\10.2.0\client_1\BIN。如果你正确安装Oracle客户端,就不应该存在这个问题。

  方法2、有点土就是用QT自带 loadlibrary 自己加载oci.dll库位置。

  我用的方法是1+2,已经测试无问题。

    QLibrary *hello_lib = NULL;
    //写清楚库的路径,如果放在当前工程的目录下,路径为./Oracle.so
    hello_lib = new QLibrary("C:\\oracle\\product\\10.2.0\\client_1\\BIN\\oci.dll");

    //加载动态库
    hello_lib->load();
    if (!hello_lib->isLoaded())
    {
        printf("load Oracle failed!\n");
        return ;
    }

   但要注意不管方法1或者方法2,Oracle 客户端是必须要装的,另外我不知道QT各版本编译出来的库是否通用,自己编译比较好。


  WIN7 我还遇到一个问题:

  

QOCIDriver: unable to create environment
error_Oracle:
 " Unable to logon"
  这个你用PL/SQL应该遇到过

 解决方法:

 1、右键用 管理员身份账户 运行

 2、程序路径不能有(),类似"C:\Program Files (x86)" 这样的路径无法登陆。我只知道10 是不行,不知道12改了没有。

  

QSqlDatabase: QOCI driver not loaded这个错误提示是关于Qt框架中使用Oracle数据库连接时出现的问题。这个错误表示Qt的OCI驱动没有被加载,导致无法连接Oracle数据库。 要解决这个问题,你可以尝试以下几个方法: 1. 确保正确安装了Oracle客户端软件:Qt的OCI驱动依赖于Oracle客户端软件。确保你已经正确安装了适合你的操作系统版本的Oracle客户端软件,并且设置了正确的环境变量。 2. 检查OCI驱动的路径和名称:在Qt中,OCI驱动的名称为"QOCI"。确保在连接数据库前,调用了`QSqlDatabase::addDatabase("QOCI")`来添加OCI驱动,并且使用正确的路径指向OCI驱动文件。 3. 确保OCI驱动文件存在:检查OCI驱动文件是否存在于指定的路径中。如果驱动文件不存在,可以尝试重新安装OCI驱动或者从其他可靠来源下载正确的OCI驱动文件。 4. 检查OCI配置文件:OCI驱动需要一个配置文件来连接Oracle数据库。确保在配置文件中设置了正确的数据库参数,如用户名、密码、主机名和端口号等。 5. 检查编译器和Qt版本兼容性:确保你使用的编译器和Qt版本与OCI驱动Oracle数据库版本兼容。有些版本的OCI驱动可能与特定版本的QtOracle数据库不兼容。 通过以上方法,你应该能够解决QSqlDatabase: QOCI driver not loaded问题。如果问题仍然存在,你可能需要进一步查看QtOracle的文档或者寻求相关技术支持的帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [终于编译好了qtoracle驱动QOCI,连接driver not loaded解决方法](https://blog.youkuaiyun.com/luozhuang/article/details/38400239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [QtCreator5.12+MVCS2017编译器+Oracle12.2数据库报错 QSqlDatabase: QOCI driver not loaded](https://download.youkuaiyun.com/download/qq_41071706/11139791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值