Qt 编译Oracle驱动

1. 确保你的电脑安装了Oracle,请首先确认其ABI是64位的或者32位的。

2. 请找出你的Oracle SDK的目录。我的电脑安装的是64位的Oracle 11g,安装在

D:\app\lbc\product\11.2.0\dbhome_1 目录下,

SDK 的inlcude目录是 D:\app\lbc\product\11.2.0\dbhome_1\OCI\include,

lib文件所在的目录是 D:\app\lbc\product\11.2.0\dbhome_1\OCI\lib\MSVC

3. 安装相应版本的QT, 如果是64位的Oracle,请安装64位的Qt,否则请安装32位的Qt。当然你也可以同时安装64位和32位2个版本。我这里安装的就是2个版本的Qt,所以既可以编译为32位应用程序,也可以编译为64位的应用程序。 下面是安装过程。

3.1 下载32位的Qt,我下载是的5.63 Visual studio 2013的,文件名qt-opensource-windows-x86-msvc2013-5.6.3.exe

3.2 下载64位的Qt,我下载同样是 5.6.3  Visual studio 2013,文件名qt-opensource-windows-x86-msvc2013_64-5.6.3.exe。


3.3 安装32位的Qt,选择安装路径,安装的组件。选择所有的组件。大体包括3部分, msvc2013 32-bit,源代码 Source Components 和Qt Creator集成开发环境。

3.4 安装64位的Qt,选择安装路径,安装的组件。这次不再需要选在源码,仅需选择msvc2013 64-bit,和 Qt Creator,注Qt Creator 是必选项。

3.5 配置Qt编程环境。如果你仅仅安装32位的Qt或者仅仅安装64位的Qt,你无需配置,系统的默认配置就能工作的很好。这里给出2套构建套件的配置。打开Qt Creator,点击 “工具”->“选项”菜单, 选中“构建与运行”。选中Qt Version选项卡。 由于64位Qt是后安装的,因此这个版本可自动检测出来,并且是缺省的。你需要添加一个32位的Qt版本,需要手工选择qmake.exe的位置并为这个版本起个名字。这里我取名 Qt 5.6.3(msvc2013).下图是我的设置



这次选中构建套件,先克隆一套新的配置。起个名字,选择正确的编译器,选择正确的Qt版本,注QT版本必须和编译器匹配。下面是我的设置。


现在可以编译Oracle的驱动了。你首先需要在Qt的源代码中找出正确的工程文件。在我安装的这个版本中,在我的电脑上,其工程文件为C:\Qt\Qt5.6.3_x86\5.6.3\Src\qtbase\src\plugins\sqldrivers\oci\oci.pro. 为了不弄坏源代码,你可将源代码复制到新的位置。因为Qt源码之间有较强的依赖,你需要将整个qtBase目录都复制过去。
因为编译驱动时,需要依赖Oracle的SDK文件,所以,你需要对oci.pro做一点改动,以便可以访问到Oracle SDK 的.h文件和库文件。在工程文件中增加2行。INCLUDEPATH后加上Oracle SDK头文件的路径,LIBPATH 后加上Oracle SDK lib文件的路径,下面是我的电脑上的设置。

INCLUDEPATH += D:\app\lbc\product\11.2.0\dbhome_1\OCI\include
LIBPATH += D:\app\lbc\product\11.2.0\dbhome_1\OCI\lib\MSVC

注意,你编译时的构建套件必须和Oracle版本的位数一致。如果Oracle是64位的,必须选择64位方式编译。编译后的文件被自动复制到当前盘下的 \plugins\sqldrivers目录,请复制此目录下的.dll 和pbd文件到 qt下相应的目录。在我的电脑,需要复制到 C:\Qt\Qt5.6.3_x64\5.6.3\msvc2013_64\plugins\sqldrivers 目录。 至此,你就可以用Qt的数据库接口访问Oracle数据库了。


测试代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSql>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QVariantList>
  // 打印Qt支持的数据库驱动
  qDebug() << QSqlDatabase::drivers();
输出:
  ("QSQLITE", "QMYSQL", "QMYSQL3", "QOCI", "QOCI8", "QODBC", "QODBC3", "QPSQL", "QPSQL7")

可以看到,现在支持Oracle驱动了.
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值