Qt远程连接Oracle数据库(msvc+mingw)

1.下载Oracle的相关驱动文件

出于工作要求需要远程连接别人的Oracle数据库,所以本地没有下载Oracle,驱动相关是直接到官网下载的。

下载地址:Oracle Instant Client Downloads

(1)在Instant Client for Windows下选择位数。如果QT的编译器是32位的,驱动文件也要下载32位,跟编译器保持一致。

(2)下载basic和sdk两个包,下载完后解压即可。

2.Qt编译Oracle驱动

如果之前已经编译过,Qt已经支持了QOCI的话这一步可以跳过,否则的话需要自行编译一下。

(1)下载QT的源码组件,如果之前就下载了可以跳过。

(2)在源码中找到oci.pro文件,打开,将原先的QMAKE_USE += oci注销,按照下图更改,其中D:\Oracle\DBDLL\instantclient_19_20是前面Oracle驱动文件的解压路径,自行替换为实际路径即可,替换完成后直接编译oci.pro。

注意:如果是用msvc的话,前面QMAKE_LFLAGS要替换为oci.lib

(3)重新编译oci.pro成功后在本机D:\plugins\sqldrivers目录下会生成对应的文件,图示是mingw编译,将生成的两个dll文件放入qt安装目录下的..\plugins\sqldrivers中,并且按需放到项目目录下。如果是msvc的话就是生成了dll和lib,也一样操作就好

 (4)将第1步下载的Oracle文件中,basic文件夹里的dll文件,也拷贝到应用程序目录下,比如这些:

3.代码连接部分

4.常见错误

(1)提示Driver not load

确认前面的步骤是否正确,尤其是32位和64位要对应,如果程序是用32位的但是用mingw64位编译出来的库是用不了的。以及相应的库都要放到程序目录下。

(2)用MSVC编译时,提示msvc-version.conf loaded but QMAKE_MSC_VER isn't set

参考了其他人的文章,更换默认构建目录之后就解决了。

(3)MSVC编译时提示ori.lib文件打开有误

重新加载了pro文件,然后新建文件夹,将所用的sdk相关整理到一起之后解决了,不清楚是为什么,猜测可能跟文件路径长度有关?因为整理之前文件名路径很长,类似于:D:\Qt-Oracle\x64\instantclient-sdk-windows.x64-19.24.0.0.0dbru\instantclient_19_24\sdk\include。然后看了一下之前mingw编译成功的记录,发现就是路径长度有差异,换了个路径竟然真的OK了,有种瞎猫碰上死耗子的感觉,不具有太多参考价值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值