我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用。但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题。下面废话不多少,直接上教程。

注:本教程采用Qt5.5.1版本来讲下Qt5.5.1和Qt5.3.2编译OCI驱动过程,其他版本请对号入座。

我的Qt版本是Qt5.5.1,安装路径是默认的 C:\Qt\Qt5.5.1。

我的oracle 11g客户端安装路径: D:\app\client\product\11.2.0\client_1。

一、我们安装oracle11g,oracle下载与安装我不再累赘,网上一大堆安装方法。

(经过验证,发现不添加系统变量也可以编译,故此将其划掉)

二、我们打开环境变量在系统变量的PATH中添加

然后保存退出,Win+R打开运行输入cmd,在“命令提示符cmd”中输入qmake -v与mingw32-make -v查看一下版本号和输出路径是不是我们刚刚设置的,因为很多人电脑上都装了好多版本的Qt,当然这里我为了方便把其他版本的都卸载了。

不要小看这些小细节,他们看起来虽有些微不足道,但是当你编译出了问题后,你还真不知道从哪下手,所以要切记这一点,直接将你想要的设到环境变量中去。

二、打开oci文件夹:C:\Qt\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\oci

三、打开oci工程,在Pro文件中添加:

INCLUDEPATH += D:\app\client\product\11.2.0\client_1\oci\include
LIBPATH += D:\app\client\product\11.2.0\client_1\oci\lib\msvc

五、构建 → 重新构建项目 “oci”

在Qt5.3.2中:

等待程序构建完毕后,打开C:\Qt\Qt5.3.2\5.3\Src\qtbase\plugins\sqldrivers,可以看到有四个文件将文件全部复制到C:\Qt\Qt5.3.2\5.3\mingw482_32\plugins\sqldrivers中。

在Qt5.5.1中:

等待程序构建完毕后,打开C:\plugins\sqldrivers,可以看到有四个文件将文件全部复制到C:\Qt\Qt5.5.1\5.5\mingw482_32\plugins\sqldrivers中。

有人会说我找不到这个C:\Qt\Qt5.3.2\5.3\Src\qtbase\plugins\sqldrivers路径,这个路径在新版本中Qt官方改了,就像Qt5.5.1的这个路径默认在Qt安装的根目录里面,就是C:\plugins\sqldrivers.

Qt5.5.1和Qt5.3.2编译OCI驱动教程,就到这里结束了。

四、验证

如何验证?网上验证方法一大堆,在这我也贴出一个。

 #include "widget.h"
#include <QStringList>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlDatabase> #include <QMessageBox>
#include <QDebug>
/***********************************************
* 作者:夜潇
* QQ:1285015525
* 博客:http://www.cnblogs.com/CLXiao-1029/
* ********************************************/ Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//查看所有数据库驱动
QStringList lists = QSqlDatabase::drivers(); for(int i = ;i < lists.size(); ++ i)
{
qDebug() << lists.at(i);
}
//载入oracle驱动,打开本地数据库
QSqlDatabase db2=QSqlDatabase::addDatabase("QOCI");
db2.setHostName(tr("127.0.0.1"));//如果连接远程数据库,就把IP换成对方的,并且远程防火墙是关闭的
db2.setPort();
db2.setUserName(tr("scott"));//这个用户是默认的,如何打开这个用户,自己百度
db2.setPassword(tr(""));//这个是我的口令
db2.setDatabaseName(tr("orcl"));
if(!db2.open())
{
QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接失败!"));
qDebug() <<"error_Oracle:\n" << db2.lastError().text();
return;
}
else
{
QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接成功!"));
QSqlQuery query;
bool isok = query.exec("select * from xsb");
if(!isok)
{
db2.close();
return;
}
query.next();
QString Str1 = query.value().toString();
QString Str2 = query.value().toString();
QString Str3 = query.value().toString();
QString Str4 = query.value().toString();
QString Str5 = query.value().toString();
QString Str6 = query.value().toString();
QString Str7 = query.value().toString();
qDebug() << QObject::tr("xsb:" )<< Str1<<Str2<< Str3<<Str4<< Str5<<Str6<<Str7;
} }

有问题请留言,或者发邮箱给我:1285015525@qq.com

Qt5.5.1和Qt5.3.2编译OCI驱动教程及验证方法的更多相关文章

  1. Qt5编译oracle驱动教程

    我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用.但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题.下面废话不多 ...

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

    在前一篇的文章中我已经发过一个相似的文章,详情请点击:Qt5编译oracle驱动教程. 在那一篇文章中已经可以解决了Qt5的常用版本的Oracle数据库驱动的支持,但是在新的Qt开发工具中那种方法竟然 ...

  3. Qt5.5.0在Windows下静态编译(修改参数以后才能支持XP)good

    测试系统环境: windows 7 编译软件环境: vs2013 + QT5.5.0 [源码地址:http://download.qt.io/official_releases/qt/5.5/5.5. ...

  4. Qt5.5.0在Linux下静态编译(加上-fontconfig编译项才能显示中文) good

    测试系统环境:Ubuntu12.04 (32bit/64bit)编译软件环境:QT5.5.0   本文章主要介绍Linux下QT静态编译环境的搭建,以及如何编译我们的程序board_driver. 1 ...

  5. qt (5.60/5.70) 编译 QOCI 驱动

    转载请注明原文链接http://www.cnblogs.com/majianming/p/5925105.html 在学习qt过程中,遇到了编译oracle驱动的问题,在开源协议下没有编译好的,那就只 ...

  6. Qt编译Oracle OCI驱动

    最近使用qt开发了一个访问数据库的工具, 默认使用ODBC驱动注入的方式,后来发现Oracle中ODBC驱动注入经常失败. 后来就想直接使用OCI方式访问,而默认情况下Qt只有Sqlite和ODBC驱 ...

  7. 【Android】Eclipse自动编译NDK/JNI的三种方法

    [Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...

  8. Android 源码编译及常见错误及解决方法

    最近要往arm开发板上移植android系统,大大小小的问题遇到了太多太多,都是泪啊.本人初接触嵌入式开发,对问题的根源不是太了解,不过好在每解决一个问题,便记录一下.话不多说,正式罗列问题: hos ...

  9. linux下编译运行驱动

    linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发. 按照如下方 ...

随机推荐

  1. JAVA 基础知识学习笔记 名称解释

    Java ee:​ IDE: ​ itegrity   development environment 集成开发环境 JMS:​ java Message Service java   信息服务 JM ...

  2. CSS动画属性性能详细介绍

    CSS动画属性会触发整个页面的重排relayout.重绘repaint.重组recomposite Paint通常是其中最花费性能的,尽可能避免使用触发paint的CSS动画属性,这也是为什么我们推荐 ...

  3. Mybatis在oracle批量更新

    最近公司业务中为了提高效率要做mybatis批量更新,但是到了oracle数据库中做了好几次都没成功,后来发现mybatis最后少了个分号,可能是Mybatis内部做了异常try  catche  处 ...

  4. 通过java反射得到javabean的属性名称和值参考

    通过java反射得到javabean的属性名称和值 Field fields[]=cHis.getClass().getDeclaredFields();//cHis 是实体类名称 String[] ...

  5. JAVAEE——spring03:spring整合JDBC和aop事务

    一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模 ...

  6. spring的Convert机制

    spring.core包内有Converter接口,方法是T convert(S source);从一个类型转为内容一个类型的实际转化器:converters可能非常多,需要一个注册器来集中管理使用, ...

  7. C#基础:.NET环境下WebConfig的加密

    在将ASP.NET项目部署到服务器上时,内网环境下Web.Config往往是直接复制过去.对于外网环境,则需要对Web.Config文件进行加密. .NET环境下一共提供了2种方式的加密功能,分别是D ...

  8. solr的基本概念

    一.solr的基本概念 大家可以把solr搜索引擎看成一个数据库,不过是基于内存的.它可以存储信息,并且根据你的查询条件返回你想要的信息. 1.collection和core的概念 collectio ...

  9. 【技术解密】SequoiaDB分布式存储原理

    分布式架构势在必行 在传统的数据库技术中,为了保证数据的安全与高性能,通常会选择高端的外置存储作为数据库的主要存储源,而本地磁盘则被视为不可靠的性能低下的一种设备.这种观念的产生,主要是由于过去本地磁 ...

  10. javascript闭包的妙用——实现函数的重载

    最近在看John Resig 与 Bear Bibeault的<JavaScript 忍者秘籍>.这本书处处提现了js的魔法(从我这个写强类型语言的人看来).js能够点石成金,处处体现着它 ...