Qt + VS编译oracle驱动库

Qt + VS编译oracle驱动库流程如下所示:
1、打开需要编译的库的版本,打开对应的qmake,如下我选择了VS2015、2017 64位
Qt + VS编译oracle驱动库_第1张图片
2、修改数据库源码下的qsqldriverbase.pri的文件如下所示:
Qt + VS编译oracle驱动库_第2张图片

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
Qt + VS编译oracle驱动库_第3张图片
4、配置相关项目属性,将oracle数据库的相关头文件加载到程序中
Qt + VS编译oracle驱动库_第4张图片
Qt + VS编译oracle驱动库_第5张图片
遇见OCIBindPos2报错,做如下修改。
Qt + VS编译oracle驱动库_第6张图片

5、点击运行,即可生成oracle驱动库,将生成的驱动库qsqloci.dll,拷贝至对应的Qt版本目录下,即可。
Qt + VS编译oracle驱动库_第7张图片
6、Qt 链接测试程序如下所示,弹窗显示Oracle conncet success,则驱动编译成功:

#include "testorcel.h"
#include 
#include 
#include 
#include 

#include 
#include 
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);
	}

	//载入oracle驱动,打开本地数据库
	QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
	db.setHostName("127.0.0.1");//如果连接远程数据库,就把IP换成对方的,并且远程防火墙是关闭的
	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()
{

}

你可能感兴趣的:(Qt,C++,qt,oracle,数据库)