Qt版本为:Qt5.4.2
Oracle版本为:Oracle 11g
解决QOCI driver not loaded
Qt安装好之后运行有关oracle数据库程序时会出现问题,原因是,Qt本身缺少一些数据库文件。
qt create编译oracle驱动
1、使用qt creater直接打开D:\qt5.4.2\5.4\Src\qtbase\src\plugins\sqldrivers\oci\oci.pro文件,工具会自动创建工程。
创建工程之后直接创建运行会报错误需要把oci.pro文件修改成下图
TARGET = qsqloci
HEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp
#QMAKE_USE += oci
QMAKE_LFLAGS += oci.lib
darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ
INCLUDEPATH += "D:\Oracle\product\11.2.0\dbhome_1\OCI\include"
LIBPATH += "D:\Oracle\product\11.2.0\dbhome_1\OCI\lib\MSVC"
OTHER_FILES += oci.json
PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)
然后把qsql_oci.cppde 1559行改为
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);
2、右键工程点击“运行”按钮,工具会自动编译oracle驱动,我生成的文件在D:\qt5.4.2\5.4\Src\qtbase\plugins\sqldrivers目录下;
3、把上图红框标注的两个文件复制到D:\qt5.4.2\5.4\msvc2013_64_opengl\plugins\sqldrivers文件夹下;
4、之后重启Qt creator,并且重新执行qmake;