由与qt开源版本没有提供oracle数据库驱动,需要自己根据源代码来手动编译oracle驱动。

经过近三天的折腾,终于成功编译oracle驱动,连接到数据库

ps:期间经过各种失败疼苦迷茫。现在终于完成,心情也开阔些。程序员强迫症的疼苦。闲言少叙。接下来将一步一步,描述我的实现过程

一、工具准备

1、qt-opensource-windows-x86-msvc2015_64-5.8.0.exe这个是我是用的qtSDK及里面包含的atcreator

2、在安装的过程中切记把 src选项勾上,默认是不选的。

3、ORA+11+G+R2+server+64bit+for+windows.iso这是我使用的oracle数据库

二、编译生成oracle驱动

1、使用qtcreate打开下面目录的项目C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\oci每个人安装路径可能不一样,可根据自己的情况相应更改

需要强调的是在安装qt-opensource-windows-x86-msvc2015_64-5.8.0.exe需要勾选src选项。才能有相应的src目录

打开后直接执行qmake。发现如上面出现的错误。这个问题曾纠结了我一天多。最终在某国外网站找到了解决方法(曾一度想放弃了)

解决方法:打开oci.pro文件

如花圈里面所示。把原来上面那句去掉,添加下面那句即QMAKE_LFLAGS += oci.lib

在右击qmake项目发现成功

2、右击构建项目

出现以上问题。这是需要include Oracle相关的头文件

打开工程文件添加

INCLUDEPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\include

注意相应的目录根据你自己oracle安装目录而定,但是目录后半部分都是一样的如\product\11.2.0\dbhome_1\OCI\include

这样就把相关的头文件包进该工程里了

接着构建项目,发现如下错误

解决方法:上面只抱进的相应的头文件,还应该把相关的lib文件包含进来

打开工程文件,添加:LIBS += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\lib\MSVC\oci.lib,如下图

如果仍然找不到oci.lib可以使用这种添加形式:LIBPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\lib\MSVC

清除项目 ->执行qmake->重新构建

没有错误出现了,仅仅是几个类型转换的警告。

表明已经生成成功。oracle相关驱动一生成成功

打开文件C:\plugins\sqldrivers

果然已经生成相应的dll lib驱动文件。

三、使用驱动连接数据库

把上面目录显得qsqloci.dll(release版本)、qsqlocid.dll(debug版本)文件考到目录

C:\Qt\Qt5.8.0\5.8\msvc2015_64\plugins\sqldrivers

ps:目录根据具体安装而定,但后面部分都是一样的,别考错了

四、qt编写代码连接oracle数据库

注意在连接数据库的项目文件里添加QT += sql

static bool createConnection()

{
    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");//QOCI
    db.setPort(1521);
    db.setHostName("127.0.0.1");
    db.setDatabaseName("orcl");
    db.setUserName("test");
    db.setPassword("456123");
    if (!db.open()) {
        QMessageBox::critical(0, "Cannot open database",
            "Unable to establish a database connection.", QMessageBox::Cancel);
        return false;
    }
    else{
        QMessageBox::critical(0,"congratulation!","oracle database connnect successfuly!!!",QMessageBox::Ok);
        return true;
    }
}
运行结果如下:


说明数据库已连接成功!!!
现贴出整个数据库连接头文件

有什么问题可以及时联系我

qt连接oracle数据库的更多相关文章

  1. java连接Oracle数据库

    Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表: create table student ( id ) not null primary key, ...

  2. 记录排查解决Hubble.Net连接Oracle数据库建立镜像库数据丢失的问题

    起因 前几天在弄Hubble连接Oracle数据库,然后在mongodb中建立一个镜像数据库; 发现一个问题,原本数据是11W,但是镜像库中只有6w多条; 刚开始以为是没运行好,又rebuild了一下 ...

  3. NodeJs连接Oracle数据库

    nodejs连接oracle数据库,各个平台的官方详情文档:https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 我的nodej ...

  4. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

  5. 用VS连接oracle数据库时ORA-12504错误

    在用VS2008连接oracle数据库时,可能会出现: ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME 只需在web.config文件Data ...

  6. ASP.NET连接Oracle数据库的步骤详解(转)

    ASP.NET连接Oracle数据库的步骤详解   本文我们主要介绍了ASP.NET连接Oracle数据库的步骤及每个步骤需要进行的设置,希望能够对您有所帮助.   在用ASP.NET开发应用程序时, ...

  7. 64 位win 7或windows 8下的visual studio不能连接Oracle数据库调试网站的问题

    在64 位win 7或windows 8系统下,visual studio直接F5运行网站调试,你会发现不能连接Oracle数据库,会报一个“ORA-06413: Connection not ope ...

  8. [原创]安装Oracle 11gR2,以及如何在win8下使用plsql develper连接Oracle数据库 ,在这里和大家分享下

    一,关于win8下安装Oracle 11gR2 1.我下载的是Oracle_11gR2_win64.其中有两个包: 注意:在解压了之后将:win64_11gR2_database_2of2\datab ...

  9. 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed,probable Oracle Net admin error

    用Navicat连接Oracle数据库时出现如下错误 上网一查原来是oci.dll版本不对.因为Navicat是通过Oracle客户端连接Oracle服务器的,Oracle的客户端分为两种,一种是标准 ...

随机推荐

  1. keras Model 1 入门篇

    1 入门 2 多个输入和输出 3 共享层 最近在学习keras,它有一些实现好的特征提取的模型:resNet.vgg.而且是带权重的.用来做特诊提取比较方便 首先要知道keras有两种定义模型的方式: ...

  2. php接口数据安全解决方案(一)

    前言 目录介绍 登录鉴权图 接口请求安全性校验整体流程图 代码展示 演示用户登录 演示获取用户信息 文章完整代码地址 后记 前言 目的: 1.实现前后端代码分离,分布式部署 2.利用token替代se ...

  3. 5G && 物联网

    可打电话的 2G.能够上网的 3G.满足移动互联网用户需求的 4G 相比,逐步可以商用的 5G 在多重性能上更胜一筹,如 高数据率: 低延迟: 更节能: 有效地降低通信成本: 具备更高的系统容量: 更 ...

  4. 浅谈-对modbus的理解

    浅谈-对modbus的理解 一.简介 Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准.1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP ...

  5. SAP R3和SAP Business One的区别

    SAP R3是SAP开发的 开发语言是ABAP. 之前叫SAP R/2 然后叫R/3 后又改叫ECC 现在叫A1了. 现在有新的版本S4 HANA : SAP发展史 SAP Business One是 ...

  6. mysql的root用户无法给普通用户授权问题处理

    1.查看Grant_priv是Y还是N 执行下面 select * from mysql.user where User='root' and Host='%'\G; 下图查看结果为Grant_pri ...

  7. 深入理解隐马尔可夫(HMM)模型

    1.安装依赖包hmmlearn 直接pip install hmmlearn可能会报错(安装这个模块需要使用C环境编译) 可以尝试用 conda install -c omnia hmmlearn安装 ...

  8. 《CNCF × Alibaba云原生技术公开课》知识点自测(一):第一堂“云原生”课

    (单选)1.容器启动后,我会时常 SSH 进入到容器里然后写很多文件.请问这破坏了云原生理念了吗? A. 否   B. 是 (单选)2.云原生架构必须选型 Kubernetes 方案. A. 否  B ...

  9. 心の壁 From EOE:Air / 真心为你

    https://www.bilibili.com/bangumi/media/md10272/ 真嗣:我问你. 凌波:什么? 真嗣:梦到底是什么呢? 凌波:梦? 真嗣:我不太明白什么是现实. 凌波:你 ...

  10. Arduino图形化编程软件ArduBlock的安装过程

    ArduBlock是一款图形编程插件,接下来我们在Windows10上进行安装 注意ArduBlock虽然能安装在1.83版本的Ardunio上,但在载入程序时会报错,用本身的IDE不会出现这种情况. ...