一、在oracle官网下载包
二、驱动编译
1、打开编译命令行
2、执行如下命令:
set INCLUDE=%include%;F:\instantclient_sdk\include;F:\Qt\Qt5.4.1\Tools\mingw491_32\include
set LIB=%lib%; F:\instantclient_sdk \lib\msvc
cd F:\Qt\Qt5.4.1\5.4\Src\qtbase\src\plugins\sqldrivers\oci(自己QT实际安装路径)
qmake oci.pro
mingw32-make
其中:F:\instantclient_sdk\include 为instantclient-sdk-nt-12.2.0.1.0.zip实际解压路径
3、拷贝编译的结果文件
拷贝F:\Qt\Qt5.4.1\5.4\Src\qtbase\plugins\sqldrivers目录下:libqsqloci.a、libqsqlocid.a、qsqloci.dll、qsqlocid.dll
四个文件到F:\Qt\Qt5.4.1\5.4\mingw491_32\plugins\sqldrivers文件夹下
4、编译程序,进行测试
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QDebug>
#include <QSqlError>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setPort(1521);
db.setHostName("192.168.1.101");
db.setDatabaseName("ORCL");
//db.setUserName("myoracle");
db.setUserName("lhl_oracle");
db.setPassword("111");
if (!db.open())
{
//链接数据库失败";
qDebug() << db.lastError().text();
qDebug() << "Open error";
return false;
}
qDebug() << "Open OK";
QSqlQuery query;
bool b = query.exec("SELECT * from MYORACLE.\"user\"");
while (query.next()) {
QString id = query.value(0).toString();
qDebug() << "ID= " <<id ;
}
qDebug() << db.lastError().text();
return a.exec();
}
同时拷贝F:\soft\oracle\instantclient-basiclite-nt-12.2.0.1.0\instantclient_12_2目录下的所有dll文件到程序运行目录如下图: