QT 5.9.9 配置使用 ORACLE 数据库

因为版权问题,Qt本身不自带Oracle数据库的驱动,因此如果想要借用Qt操作Oracle数据库,需要手动进行编译。

ORACLE客户端下载安装

Oracle11g客户端安装配置_行孤、的博客-CSDN博客_oracle11g客户端安装步骤

QT 下载安装

【Qt】下载与安装_华开发的博客-CSDN博客_qt下载安装

安装组件时勾选 SOURCE 项

编译OCI

本机QT 安装目录:D:\QT\QT_5.9

ORACLE客户端 目录 :F:\oracle_client

QTCreator 打开QT源码 oci.pro 目录:D:\QT\QT_5.9\5.9.9\Src\qtbase\src\plugins\sqldrivers\oci

QT构建分为mingw 和 msvc 构建时oci.pro修改不同,根据个人配置选择

Qt5.8以上版本编译Oracle数据库的OCI驱动教程 | OCI

1,mingw构建方式

修改oci.pro

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

INCLUDEPATH += F:\oracle_client\oci\include   #本机oracle客户端目录
LIBS += F:\oracle_client\oci\lib\msvc\oci.lib #根据个人安装路径调整

PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)

TARGET = qsqloci

HEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp

#QMAKE_USE += oci
QMAKE_LFLAGS +=F:\oracle_client\BIN\oci.dll

darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ

OTHER_FILES += oci.json

INCLUDEPATH += F:\oracle_client\oci\include
LIBPATH  += F:\oracle_client\oci\lib\msvc

PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)

点击重新构建项目

成功后在本机D:\plugins\sqldrivers下会获得

qsqloci.dll ,qsqlocid.dll ,libqsqloci.a和libqsqlocid.a 4个文件

根据构建套件不同将文件放置不同位置

msvc  : D:\QT\QT_5.9\5.9.9\mingw53_32\plugins\sqldrivers

2,msvc构建方式

修改oci.pro

TARGET = qsqloci

HEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp

QMAKE_LFLAGS += oci.lib

darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ

OTHER_FILES += oci.json

INCLUDEPATH += F:\oracle_client\oci\include
LIBPATH  += F:\oracle_client\oci\lib\msvc

PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)

点击重新构建项目

成功后在本机D:\plugins\sqldrivers下会获得

qsqloci.dll ,qsqlocid.dll ,qsqloci.lib和qsqlocid.lib 4个文件

根据构建套件不同将文件放置不同位置

msvc  : D:\QT\QT_5.9\5.9.9\msvc2015\plugins\sqldrivers

QT中ORACLE测试使用

pro文件中添加

QT +=  sql

使用头文件中添加

#include 
#include 
#include 

显示可用驱动

    //查看所有数据库驱动
    QStringList lists = QSqlDatabase::drivers();

    for(int i = 0 ;i < lists.size(); ++ i)
    {
        qDebug() << lists.at(i);
    }

测试

#include 

#include 
#include 
#include 
#include 
#include 

#include 


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


    //载入oracle驱动,打开本地数据库
    QSqlDatabase db2=QSqlDatabase::addDatabase("QOCI");
    db2.setHostName("");//如果连接远程数据库,就把IP换成对方的,并且远程防火墙是关闭的
    db2.setPort(1521);
    db2.setUserName("");//这个用户是默认的,如何打开这个用户,自己百度
    db2.setPassword("");//这个是我的口令
    db2.setDatabaseName("");
    if(!db2.open())
    {
        qDebug() <<"error_Oracle:\n" << db2.lastError().text();
    }
    else
    {
        //QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接成功!"));
        qDebug() <<"true_Oracle:\n" ;
    }

    return a.exec();
}

你可能感兴趣的:(QT,oracle,数据库,database)