Qt5.3.1 Mingw32 编译oracle 11g 驱动

~~~~我的生活,我的点点滴滴!!



工作中用到数据库是在频繁不过了,但是Qt默认只支持odbc和sqlite,不过还好,他提供了编译的接口,我们只需要自己编译就好了,在c++中Qt的数据库我个人觉得做的还是蛮不错的,容错处理,异常处理,错误定位等等都不错。


那么我们就尝试的编译出自己需要的数据库驱动吧,这里我们编译 oracle 的



一、Qt

下载最新的Qt版本,当时是Qt5.3.1,我下载的是mingw版本的 qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe 安装,可以默认安装,也可以全部勾上安装,看个人喜好!
安装好后,我们设置一下环境变量,因为编译时需要用到qmake与mingw32-make,所以我们分别去设置qmake环境变量 path中添加 D:\Qt\Qt5.3.1\5.3\mingw482_32\bin 每个人安装路径不一样,自己照着去找
mingw环境变量 path中添加 D:\Qt\Qt5.3.1\Tools\mingw482_32\bin
配置好后,去cmd下输入qmake -v 与mingw32-make -v 看看版本号 看看输出路径是不是我们想要的,因为很多人电脑上都装了好多版本的Qt,比如我就装了5个版本的Qt,这些小细节看起来微不足道,但是编译时出问题了你还真不知道从哪下手!!切记。



二、oracle

我编译的时候,oracle 10g 官网已经不提供下载了,网上找了一圈,没下成功,那就下个11g的,下个客户端 win32_11gR2_client.zip
安装------------------安装时选中 管理员的选项,然后一路 next 需要点时间 或者自动google去看安装教程,我们不作重点



三、Qt 编译oracle

打开Qt5.3.1 的consloe如果是win7 安装在c盘下面,那最好 用管理员的权限打开吧


Qt5.3.1 Mingw32 编译oracle 11g 驱动_第1张图片



然后分别执行下面的命令:


set INCLUDE=%include%;G:\app\fei\product\11.2.0\client_1\oci\include;D:\Qt\Qt5.3.1\Tools\mingw482_32\include

set LIB=%lib%;G:\app\fei\product\11.2.0\client_1\oci\lib\msvc

cd D:\Qt\Qt5.3.1\5.3\Src\qtbase\src\plugins\sqldrivers\oci

qmake oci.pro

mingw32-make


G:\app\fei\product\11.2.0\client_1\oci\include 为你安装的oracle的路径

D:\Qt\Qt5.3.1\Tools\mingw482_32\include 为你的mingw路径

Qt5.3.1 Mingw32 编译oracle 11g 驱动_第2张图片


我编译过程报错,仔细看错,莫名其妙的链接到 VS 下面去了,然后我们去我的环境变量下面去看,发现我以前建了两个 环境变量 include 与 lib 这刚好和上面的冲突了,我把他们改了个名字,等编译完后在改回来,以后破坏别的环境

等了2秒左右就编译完了,感觉太快了,以前编译firebird时好久。

这个时候我们只需要去D:\Qt\Qt5.3.1\5.3\Src\qtbase\plugins\sqldrivers 下面把 libqsqloci.a、libqsqlocid.a、qsqloci.dll、qsqlocid.dll 这四个文件拷贝到D:\Qt\Qt5.3.1\5.3\mingw482_32\plugins\sqldrivers下面,大家可以在这个目录下面看到好多的数据库的驱动

下面我们写个简单程序看看现在Qt有多少个可用的数据库驱动来验证我们的编译是否成功


#include <QCoreApplication>

#include <QSqlDatabase>
#include <QStringList>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QStringList lists = QSqlDatabase::drivers();

    for(int i = 0 ;i < lists.size(); ++ i)
    {
        qDebug() << lists.at(i);
    }
    return a.exec();
}

记得在pro中加上 QT += sql

看下结果如何:

Qt5.3.1 Mingw32 编译oracle 11g 驱动_第3张图片

大家可以看到 里面已经有了 QOCI ,但是大家发现没有------->>>>> QMYSQL 出现了,原来Qt5 已经默认把QMYSQL加进来了,也就是说现在Qt自带的数据库多了一个mysql了,太棒了

下面附上编译好的oracle 驱动 下载地址:http://download.csdn.net/detail/ac_huang/7584297


你可能感兴趣的:(Qt5.3.1 Mingw32 编译oracle 11g 驱动)