Qt5.5.1和Qt5.3.2编译OCI驱动教程及验证方法
我们都知道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驱动教程及验证方法的更多相关文章
- Qt5编译oracle驱动教程
我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用.但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题.下面废话不多 ...
- Qt5.8以上版本编译Oracle数据库的OCI驱动教程
在前一篇的文章中我已经发过一个相似的文章,详情请点击:Qt5编译oracle驱动教程. 在那一篇文章中已经可以解决了Qt5的常用版本的Oracle数据库驱动的支持,但是在新的Qt开发工具中那种方法竟然 ...
- Qt5.5.0在Windows下静态编译(修改参数以后才能支持XP)good
测试系统环境: windows 7 编译软件环境: vs2013 + QT5.5.0 [源码地址:http://download.qt.io/official_releases/qt/5.5/5.5. ...
- Qt5.5.0在Linux下静态编译(加上-fontconfig编译项才能显示中文) good
测试系统环境:Ubuntu12.04 (32bit/64bit)编译软件环境:QT5.5.0 本文章主要介绍Linux下QT静态编译环境的搭建,以及如何编译我们的程序board_driver. 1 ...
- qt (5.60/5.70) 编译 QOCI 驱动
转载请注明原文链接http://www.cnblogs.com/majianming/p/5925105.html 在学习qt过程中,遇到了编译oracle驱动的问题,在开源协议下没有编译好的,那就只 ...
- Qt编译Oracle OCI驱动
最近使用qt开发了一个访问数据库的工具, 默认使用ODBC驱动注入的方式,后来发现Oracle中ODBC驱动注入经常失败. 后来就想直接使用OCI方式访问,而默认情况下Qt只有Sqlite和ODBC驱 ...
- 【Android】Eclipse自动编译NDK/JNI的三种方法
[Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th 2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...
- Android 源码编译及常见错误及解决方法
最近要往arm开发板上移植android系统,大大小小的问题遇到了太多太多,都是泪啊.本人初接触嵌入式开发,对问题的根源不是太了解,不过好在每解决一个问题,便记录一下.话不多说,正式罗列问题: hos ...
- linux下编译运行驱动
linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发. 按照如下方 ...
随机推荐
- PHP中常量和变量的区别
1.常量只能赋一次值: 以下是申请常量的两种方法: const THE_VALUE="one"; define("THE_VALUE","one&qu ...
- Vulkan Tutorial 24 Descriptor pool and sets
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 描述符布局描述了前一章节讨论过的可以绑定的描述符的类型.在 ...
- 如何解释json的字符串
public void getToken(){ String json = getJedis().get("f2b9152f36424e8b8a454df9b50eb743"); ...
- 4.Smarty模板之间调用
{include file="header.tpl" name="cai"}
- 多表链接 Left join
select * from( select U_User.LinkMan, SP_Approval.* ,SP_Approval_Msg.ApprovalUserID,ROW_NUMBER() ...
- maven Spring+Spring MVC+Mybatis+mysql轻量级Java web开发环境搭建
之前一直在做的一个GIS系统项目,采用了jsp+servlet框架,数据传输框架采用了apache的thrift框架,短时多传的风格还不错,但是较其他的java web项目显得有点太臃肿了,现在给大家 ...
- js-txt文本处理
js-txt文本处理 写自己主页项目时所产生的小问题拿出来给大家分享分享,以此共勉. ---DanlV TextArea的换行符处理 TextArea文本转换为Html:写入数据库时使用 js获取了t ...
- 虚拟机配置静态IP地址
使用VMware配置虚拟机静态IP地址 一.安装好虚拟后在菜单栏选择编辑→ 虚拟网络编辑器,打开虚拟网络编辑器对话框,选择Vmnet8 Net网络连接方式,随意设置子网IP,点击NAT设置页面,查看子 ...
- 有关conv_std_logic_vector和conv_integer
原文地址:关于conv_std_logic_vector 和 conv_integer 这两个函数的使用问题作者:xiphosura std_logic_arithThis is the librar ...
- 机器学习之支持向量机(SVM)
支持向量机 百度百科(基本看不懂):http://baike.baidu.com/link?url=Z4MU6AYlf5lOX7UGHVYg9tBvxBGOkriPtNt0DixmscnMz06q5f ...