Qt + VS编译oracle驱动库流程如下所示: 1、打开需要编译的库的版本,打开对应的qmake,如下我选择了VS2015、2017 64位 2、修改数据库源码下的qsqldriverbase.pri的文件如下所示:
3、通过WIN+R,打开cmd终端,执行:
qmake -tp vc C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\oci\oci.pro
执行结束后会在qmake.exe目录下生成项目文件,运行qsqloci.vcxproj 4、配置相关项目属性,将oracle数据库的相关头文件加载到程序中 遇见OCIBindPos2报错,做如下修改。
5、点击运行,即可生成oracle驱动库,将生成的驱动库qsqloci.dll,拷贝至对应的Qt版本目录下,即可。 6、Qt 链接测试程序如下所示,弹窗显示Oracle conncet success,则驱动编译成功:
#include "testorcel.h"
#include <QStringList>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlDatabase>
#include <QMessageBox>
#include <QDebug>
testOrcel::testOrcel(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QStringList lists = QSqlDatabase::drivers();
for (int i = 0; i < lists.size(); ++i) {
qDebug() << lists.at(i);
}
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("127.0.0.1");
db.setPort(1521);
db.setUserName("scott");
db.setPassword("Sys123456");
db.setDatabaseName(tr("mytestdb"));
if (!db2.open()) {
QMessageBox::warning(this, tr("info"), QString::fromLocal8Bit("Oracle conncet error =%1").arg(db.lastError().text()));
return;
}
else {
QMessageBox::information(this, tr("info"), tr("Oracle conncet success"));
}
}
testOrcel::~testOrcel()
{
}
|