Qt5.15编译Oracle 19c数据库驱动
一、下载Oracle 19c驱动,需要下载两个包,注意分x86和x64
x86下载地址:Instant Client for Windows 32-bit (oracle.com)
① instantclient-basic-nt-19.18.0.0.0dbru.zip
② instantclient-sdk-nt-19.18.0.0.0dbru.zip
x64下载地址:Instant Client for Microsoft Windows (x64) 64-bit (oracle.com)
① instantclient-basic-windows.x64-19.18.0.0.0dbru.zip
② instantclient-sdk-windows.x64-19.18.0.0.0dbru.zip
上述是我选择的版本,可根据需要下载所需版本。
二、在桌面新建Oracle 19c目录
① 在目录下分别新建x86文件夹,将下载的x86驱动包解压到该目录。

② 在目录下分别新建x64文件夹,将下载的x64驱动包解压到该目录。

三、配置驱动编译信息
① 打开去边编译工程
路径:C:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\oci
② 编辑程序信息,做如下修改
TARGET = qsqloci HEADERS += $$PWD/qsql_oci_p.h SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp #QMAKE_USE += oci darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ OTHER_FILES += oci.json PLUGIN_CLASS_NAME = QOCIDriverPlugin include(../qsqldriverbase.pri) #x86 #INCLUDEPATH += C:/Users/WJY/Desktop/Oracle_19c/x86/instantclient_19_18/sdk/include #LIBS += -LC:/Users/WJY/Desktop/Oracle_19c/x86/instantclient_19_18/sdk/lib/msvc -loci #x64 INCLUDEPATH += C:/Users/WJY/Desktop/Oracle_19c/Driver/x64/instantclient_19_18/sdk/include LIBS += -LC:/Users/WJY/Desktop/Oracle_19c/Driver/x64/instantclient_19_18/sdk/lib/msvc -loci
③ 点击编译即可,文件默认生成在C盘根目录,拷贝到Qt编译器目录即可,这里就不细说了。
四、配置Qt项目
① 整理Oracle客户端运行所依赖的相关DLL文件,即前边解压的Oracle Instant Client包,注意区分x86和x64,建议分别放置以免混淆。

② Oracle连接代码
void MainWindow::test(){ QSqlDatabase db; if(QSqlDatabase::contains("Oracle_19c")){ db = QSqlDatabase::database("Oracle_19c"); }else{ db = QSqlDatabase::addDatabase("QOCI","Oracle_19c"); } db.setHostName("192.168.100.12"); db.setDatabaseName("ORCL");//安装时全局数据库名 db.setUserName("system"); db.setPassword("@Hwjy"); db.setPort(1521); if(db.open()){ qDebug()<<"数据库连接成功"; ui->textEdit->append("数据库连接成功"); }else{ qDebug()<<"数据库连接失败"; ui->textEdit->append("数据库连接失败"); qDebug()<<db.lastError().text(); ui->textEdit->append(db.lastError().text()); } if(db.isOpen()){ db.close(); } }
③ 编写Oracle Instant Client 相关DLL加载代码
void MainWindow::load_oci(){ QString path = QCoreApplication::applicationDirPath(); path.append("/instantclient_19_18/oci.dll"); QLibrary dll; dll.setFileName(path); if(!dll.isLoaded()){ dll.load(); qDebug()<<"已加载Oracle instantclient_19_18"; } }
④ 将前边整理好的Oracle Instant Client DLL包,拷贝到程序运行目录即可,注意区分x86和x64。

浙公网安备 33010602011771号