解决Qt连接Oracle数据库失败的问题:QOCI driver not loaded

这篇博客介绍了如何在Qt5.4.2环境下编译Oracle驱动以解决QOCIdrivernotloaded错误。首先,通过qtcreator打开oci.pro文件并进行修改,包括设置目标、包含路径和库路径。接着,编译oci驱动生成所需文件,并将它们复制到Qt的相应插件目录。最后,重启Qtcreator并执行qmake以完成配置。
摘要由CSDN通过智能技术生成

Qt版本为:Qt5.4.2
Oracle版本为:Oracle 11g

解决QOCI driver not loaded
Qt安装好之后运行有关oracle数据库程序时会出现问题,原因是,Qt本身缺少一些数据库文件。

qt create编译oracle驱动
1、使用qt creater直接打开D:\qt5.4.2\5.4\Src\qtbase\src\plugins\sqldrivers\oci\oci.pro文件,工具会自动创建工程。
创建工程之后直接创建运行会报错误需要把oci.pro文件修改成下图

TARGET = qsqloci

HEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp

#QMAKE_USE += oci
QMAKE_LFLAGS += oci.lib

darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ

INCLUDEPATH += "D:\Oracle\product\11.2.0\dbhome_1\OCI\include"
LIBPATH += "D:\Oracle\product\11.2.0\dbhome_1\OCI\lib\MSVC"

OTHER_FILES += oci.json

PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)

然后把qsql_oci.cppde 1559行改为

        r = OCIBindByPos(
                d->sql, &bindColumn.bindh, d->err, i + 1,
                bindColumn.data,
                bindColumn.maxLen,
                bindColumn.bindAs,
                bindColumn.indicators,
                reinterpret_cast<ub2*>(bindColumn.lengths),
                0,
                arrayBind ? bindColumn.maxarr_len : 0,
                arrayBind ? &bindColumn.curelep : 0,
                OCI_DEFAULT);

2、右键工程点击“运行”按钮,工具会自动编译oracle驱动,我生成的文件在D:\qt5.4.2\5.4\Src\qtbase\plugins\sqldrivers目录下;
在这里插入图片描述

3、把上图红框标注的两个文件复制到D:\qt5.4.2\5.4\msvc2013_64_opengl\plugins\sqldrivers文件夹下;
在这里插入图片描述

4、之后重启Qt creator,并且重新执行qmake;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值