2021-08-31

**

利用Qt5.12.10+VS2017 编译Oracle驱动库,解决QOCI driver not load 问题**(亲测可用)

前言:
Qt官网在qt5以后就不再直接提供Oracle和Mysql数据库驱动,需要用户跟据安装的源码,手动编译数据库驱动,在此分享一下自己在编译Oracle驱动库时的心得以及踩过的坑。

一、环境准备
1、安装qt-opensource-windows-x86-5.12.10.exe
百度云盘下载链接:
链接:https://pan.baidu.com/s/13COjY7IOVltrwBf8dYFQEA
提取码:rddg
1)安装流程中,安装插件时需注意勾选上“Source”,为后期编译Oracle动态库做准备
2)在path中添加环境变量配置:
在这里插入图片描述
2、安装visual studio 2017(x64)
百度云下载链接(失效了可留言邮箱发送):
链接:https://pan.baidu.com/s/12L97fmvFBXYw6KsqreJYHg
提取码:y7hs

安装教程此处省略,网上帖子很多,再次不多赘述。
环境变量配置:
1)创建变量 VS2017
在这里插入图片描述

2)INCLUDE
在这里插入图片描述
3)LIB
在这里插入图片描述

3、安装数据库客户端oracle 11g R2 Client (x64)
百度云盘下载链接:
链接:https://pan.baidu.com/s/1UFYF8MCVKgZDG0IaA5Rzkg
提取码:85tl
在path中添加环境变量配置:
在这里插入图片描述
二、编译动态库
1、通过Qt Creator打开“C:\Qt\Qt5.12.10\5.12.10\Src\qtbase\src\plugins\sqldrivers\oci”文件下的oci.pro,打开oci项目
2、修改orc.pro文件(标红部分)
在这里插入图片描述
3、修改qsql_oci.cpp文件,其中1559行。
在这里插入图片描述
4、如果以上三个软件安装和环境变量配置正确,将项目coi右键qmake,没有报错后,点击重新构建,一切执行正常,则在qt安装盘的根目录下会新增一个目录,本人是“C:\plugins\sqldrivers”目录下,会产生编译好的dll库,主要是qsqloci.dll和qsqlocid.dll这个两个库
在这里插入图片描述
三、测试调用
1、将C:\plugins\sqldrivers目录下的qsqloci.dll和qsqlocid.dll这个两个库拷贝到
“C:\Qt\Qt5.12.10\5.12.10\msvc2017_64\plugins\sqldrivers”目录下(根据自己选择的编译器决定拷贝到哪个位置,本人选择的是msvc2017_64)

2、测试调用
将驱动文件放好之后,新建一个工程,测试一下oracle数据库连接
//连接oracle数据库
QSqlDatabase db = QSqlDatabase::addDatabase(“QOCI”);
db.setPort(1521);
db.setHostName(“name”);
db.setDatabaseName(“ORCL”);
db.setUserName(“uname”);
db.setPassword(“pwd”);
if (!db.open()) {
qDebug()<< db.lastError().text();
}else{
qDebug()<< u8"链接远程数据库成功";
}

四、注意事项:
1、如果嫌编译麻烦,也可直接拷贝作者编译好的驱动库,直接拷贝到对应编译器的drivers目录下,但需注意自己电脑上安装的oracle客户端版本,qt版本,因为本人在此踩过坑(注意版本对应)。
oralce11g_x86+VS2015_x86/VS2017_x86
oralce11g_x64+VS2015_x64/VS2017_x64
动态库链接下载地址(百度云):

链接:https://pan.baidu.com/s/175-mm7eQF84IAvxuAgfzgQ
提取码:ew92

2、在编译时出现U1077 “…/link.exe” ,"…/nmake.exe" …等问题,一般是环境变量和编译器没有设置正确,好好检查一下。

3、在拷贝别人的的驱动库,直接调用时,依然报错
QSqlDatabase: QOCI driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QOCI QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
error_Oracle:
“Driver not loaded Driver not loaded”
明明可用驱动已经有oracle驱动了,但还是报错,驱动找不着,原因很可能是下载的QOCI驱动库跟本地环境不匹配造成的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Levi.Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值