ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Qt5.12.10编译Oracle数据库驱动并连接数据库步骤

2021-06-29 09:58:03  阅读:158  来源: 互联网

标签:oci 10 Qt 文件 数据库 bindColumn OCI Qt5.12


最近也是需要用到Oracle数据库的连接,在网上也找了各大神的帖子,可能是跟我的数据库版本或配置有关,有些细节问题的修改,记录一下。                                                         

Qt版本: Qt5.12.10,Oracle版本: 10.2.0.1.0,操作系统: WIN10 64位专业版                                                         

step1:

安装Oracle数据库客户端,主要是为了使用OCI的头文件和库文件,我安装的目录为:F:\oracle\product\10.2.0\db_1\OCI,该目录下有include和lib两个文件夹,正是编译oci驱动需要的(为了使用方便我将该目录拷到了D盘根目录D:\OCI)。

step2:

安装Qt,Qt在安装的时候可以选择多个编译器套件,我选了msvc2017和msvc2017_64两种,另外还需要选择Source(源码)。

step3:

打开QtCreator,打开D:\Qt\5.12.10\Src\qtbase\src\plugins\sqldrivers\oci项目(我是装在D盘),修改oci.pro文件:

我用的msvc2017编译,修改文件:

QMAKE_USE += oci 改为 QMAKE_LFLAGS +=oci.lib

增加:

INCLUDEPATH += D:\OCI\include
LIBPATH += D:\OCI\lib\MSVC
在qsql_oci.cpp文件的1559行找到OCIBindByPos2函数,替换为:
        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);

打开qsqldriverbase.pri文件,进行如下修改:

将include($$shadowed($$PWD)/qtsqldrivers-config.pri)替换为include(./configure.pri)

然后进行构建,构建成功后会在Qt安装目录的根目录(我的是D:\)中出现几个文件夹,我们主要是关注D:\plugins\sqldrivers目录下的文件,其中qsqloci.dll和qsqlocid.dll正是我们需要用到的release版和debug版的库文件,最后将这两个文件拷贝到Qt安装目录对应路径D:\Qt\Qt5.12.10\5.12.10\msvc2017\plugins\sqldrivers,以便能够正常导入和调用。

标签:oci,10,Qt,文件,数据库,bindColumn,OCI,Qt5.12
来源: https://blog.csdn.net/jecychendf/article/details/118325248

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有