Qt5 oracle数据库驱动编译

用Qt开发Oracle程序时,常会遇到QOCI驱动问题,主要表现为程序运行时出现下面的错误。

QOCI driver not loaded
available drivers: QSQLITE QODBC3 QODBC

这说明没有安装Qt支持Oracle的驱动。


默认情况下Qt只有Sqlite和ODBC驱动,网上有相应的驱动编译安装介绍,经作者验证可行。


提前准备: 编译oracle驱动前先要安装oracle client端软件 软件包名win32_11gR2_client.zip  在oracle官方网站上有该客户端的软件包,也可在其他网站上下载。                   

QT环境:Qt  5.2.1     (mingw48_32)     


作者将软件都安装在D盘目录下

QT安装目录:  D:\Qt\Qt5.2.1

oracle客户端安装目录: D:\app


在开始菜单栏里找到Qt5.2.1  在MinGW4.8(32-bit)菜单里点击    ===>   Qt 5.2.1 for Desktop(MinGW 4.8 32 bit)    的dos终端


分别执行以下命令,以编译Oracle驱动:

1:  set INCLUDE=%INCLUDE%;D:\app\Administrator\product\11.2.0\client_1\oci\include; D:\Qt\Qt5.2.1\Tools\mingw48_32\include  

 2: set LIB=%lib%;D:\app\Administrator\product\11.2.0\client_1\oci\lib\msvc

 3: cd  D:\Qt\Qt5.2.1\5.2.1\Src\qtbase\src\plugins\sqldrivers\oci

qmake oci.pro

mingw32-make

其中,;D:\app\Administrator\product\11.2.0\client_1\oci\include为Oracle OCI驱动源码所在目录,D:\Qt\Qt5.2.1\Tools\mingw48_32\include 为编译环境的位置。


执行完以上语句,在D:\Qt\Qt5.2.1\5.2.1\Src\qtbase\plugins\sqldrivers 目录下会生成 libqsqloci.a、libqsqlocid.a、qsqloci.dll、qsqlocid.dll 四个文件,

 把它们copy到D:\Qt\Qt5.2.1\5.2.1\mingw48_32\plugins\sqldrivers目录中即可。


编译的过程如下图:




在程序中测试:

#include
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<”Available drivers:”;
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() <<”/t” << driver;
return a.exec();
}

就可以看到目前已经有的驱动列表:




你可能感兴趣的:(c/c++,Qt)