Qt5.3.2_Oracle驱动
参考网址:http://blog.csdn.net/sdqyhn/article/details/39855847
ZC: 将编译好的 qsqloci.dll和qsqlocid.dll 放到 目录“E:\ZC_ProgramFiles_2016\Qt532_vs2010\5.3\msvc2010_opengl\plugins\sqldrivers”中,这样 在Qt中调试程序的时候 也可以找到相应的驱动文件了
1、这只是 Qt5.3.2 使用的驱动,它还是要调用 Oracle客户端/服务端 里面的文件。
并不是 有了这个驱动就不需要安装Oracle客户端/服务端...
1.1、源码所在路径:“E:\ZC_ProgramFiles_2016\Qt532_vs2010\5.3\Src\qtbase\src\plugins\sqldrivers\oci”
ZC: 在Qt5.3.2的安装路径中搜索“oci”,还搜到一个结果:“E:\ZC_ProgramFiles_2016\Qt532_vs2010\5.3\Src\qtbase\src\sql\drivers\oci”,但是 网络上面的文章 都没有用这个路径源码的... 暂时先不管它吧...
2、将 源码 复制出来,准备编译
2.1、貌似 需要一些依赖项 ==> 直接在 路径“E:\ZC_ProgramFiles_2016\Qt532_vs2010\5.3\Src\qtbase\src\plugins\sqldrivers\oci”中打开项目再编译
2.1.1、提示 找不到“oci.h”
网上搜索,解决:在 pro文件中添加 :
INCLUDEPATH += E:\oracle\product\10.2.0\db_1\oci\include
LIBPATH += E:\oracle\product\10.2.0\db_1\oci\lib\msvc
ZC: 我这里,安装的是 Oracle10g(x86)的服务端,不同版本的Oracle 这里的路径可能会不同
2.1.2、执行 qmake--> 重新构建,一切正常。生成的 dll文件 位于路径:“F:\plugins\sqldrivers”中,这个不知是哪里设置的...
3、使用:
要将“F:\plugins\sqldrivers”中的相应驱动(qsqloci.dll和qsqlocid.dll),复制到 exe所在路径的 "sqldrivers"文件夹下,不然 会报 找不到驱动的错误。
4、测试代码:
4.1、pro
QT += core gui \
sql greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = OracleTest01
TEMPLATE = app SOURCES += main.cpp\
mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui #ZC: 本来 编译不通过,说找不到函数,肯定是缺少lib文件了,但是 设置了下面的语句还是不行。
#ZC: 后来才知道 原来是“QT +=”中药添加“sql”
#LIBPATH += F:/plugins/sqldrivers
#LIB += -lqsqloci
4.2、cpp
#include "mainwindow.h"
#include "ui_mainwindow.h" #include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlRecord>
#include <QtSql/QSqlError>
#include <QDebug> #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
} MainWindow::~MainWindow()
{
delete ui;
} #define DB_DRIVER "QOCI" // ZC: 这里写的是“QOCI”,实际对应的所需要的 文件是“qsqloci.dll”
#define DB_HOSTNAME "192.168.1.201"
#define DB_DATABASENAME "ZHEJIANG"
#define DB_USERNAME "wenzhoupdpas"
#define DB_PASSWD "dongruisoft.com" void MainWindow::on_pbtnTest01_clicked()
{
// ZC: 连接名
QString strConnName = "wenzhoupdpas_z";
QSqlDatabase sqlDataBase;
if (QSqlDatabase::contains(strConnName))
sqlDataBase = QSqlDatabase::database(strConnName);
else
// 使用Oracle数据库驱动
sqlDataBase = QSqlDatabase::addDatabase(DB_DRIVER, strConnName);
sqlDataBase.setHostName(DB_HOSTNAME);
sqlDataBase.setDatabaseName(DB_DATABASENAME);
sqlDataBase.setUserName(DB_USERNAME);
sqlDataBase.setPassword(DB_PASSWD); bool bOpen = sqlDataBase.open();
if (sqlDataBase.isOpen())
bOpen = true; if (! bOpen)
{
QMessageBox::about(this, "Error", sqlDataBase.lastError().text());
qDebug() << sqlDataBase.lastError().text();
}
else
{
QMessageBox::about(this, "OK", "Open Oracle10g success ! !");
qDebug() << "Open Oracle10g success ! !";
}
}
5、
6、
7、
8、
Qt5.3.2_Oracle驱动的更多相关文章
- Ubuntu Qt5 Firebird 数据库驱动安装
Ubuntu Qt5 Firebird 数据库驱动安装 apt install libqt5sql5-ibase
- Qt5编译oracle驱动教程
我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用.但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题.下面废话不多 ...
- Qt5.8以上版本编译Oracle数据库的OCI驱动教程
在前一篇的文章中我已经发过一个相似的文章,详情请点击:Qt5编译oracle驱动教程. 在那一篇文章中已经可以解决了Qt5的常用版本的Oracle数据库驱动的支持,但是在新的Qt开发工具中那种方法竟然 ...
- Linux系统下 解决Qt5无法连接MySQL数据库的方法
Linux平台下解决Qt5连接mysql数据库的问题:输入sudo apt-get install libqt5sql5-mysql解决,这种方法只能解决Qt是用sudo apt-get instal ...
- qt mysql驱动问题解绝
传统解决方法:一.解决问题 本文解决在Ubuntu16.04系统下,Qt5无法连接MySQL数据库的问题(Qt5缺少MySQL驱动,Qt5缺少libqsqlmysql.so动态库,如何安装libqsq ...
- QT5.6 编译SQLServer驱动
简要说下编译的主要步骤 @1:打开vs2015的命令行编译环境 ‘ @2:进入到cd到源码目录:cd C:\Qt\Qt5.6.0\5.6\Src\qtbase\src\plugins\sqldrive ...
- Qt5.5.1和Qt5.3.2编译OCI驱动教程及验证方法
我们都知道oracle数据库的强大,并且好多企业或者教学用到数据库时都会推荐使用.但是Qt因为版权问题没有封装oracle数据库专用驱动,网上也有一大堆说法和教程,但是或多或少的都有问题.下面废话不多 ...
- Qt5.7不能加载MySql驱动问题.(需要重新编译驱动)
转自:http://blog.csdn.net/qq_28851503/article/details/52422302 首先贴上我遇到的问题,如下: QSqlDatabase: QMYSQL dri ...
- 【Qt】Qt5.12编译MySQl5.7驱动(亲自测试成功)
目录 00. 目录 01. 安装Qt5.12 02. 打开MySQL源码项目 03. 编译MySQL驱动代码 04. 修改mysql.pro文件 05. 编译之后得到对应的库 06. 拷贝动态库到指定 ...
随机推荐
- css定位浮动总结
定位:定位在中间,放大缩小时也不会跑偏. position:absolute; top: 50%; left: 50%; margin: -270px 0 0 -455px; 解释:定位后,设百分比的 ...
- ubuntu shell脚本出错 dash
今天在Ubuntu下调试代码,明明是正确的,却仍然报错,查了错误信息才知道:Ubuntu中默认不是bash,而是为了加快开机速度,使用了dash. dash中需要严格的语法,而且与bash语法不同.例 ...
- Math.abs(~2018) —— 入群问答题
这道题的关键点在于对位操作符“~”的理解,以及内部的具体实现(设计到补码) 最后的结果是:2019 参考文章: http://www.w3school.com.cn/js/pro_js_operato ...
- java数据结构经典问题
A:栈抽象数据类型 1.栈的主要操作 void push(int data);将data数据插入栈中. int pop();删除并返回最后一个插入栈的元素. 2.栈的辅助操作 int top();返回 ...
- TensorFlow中的变量命名以及命名空间.
What: 在Tensorflow中, 为了区别不同的变量(例如TensorBoard显示中), 会需要命名空间对不同的变量进行命名. 其中常用的两个函数为: tf.variable_scope, t ...
- Linux基础命令---eject
eject eject指令允许在软件控制下弹出可移动媒体(通常是光盘.软盘.磁带或Jaz或ZIP磁盘).该命令还可以控制一些由某些设备支持的自动弹出功能的多光盘转换器,并关闭一些光盘驱动器的盘. 对应 ...
- SDOI2019Round1游记
SDOI2019Round1游记 Day 0 报道日,早晨五点睡的觉,一觉醒来已经一点半了,收拾收拾东西报道去了.因为没吃饭,坐着出租车晕车了,我让师傅把我放到历下大润发,我去金拱门吃了点饭才去的23 ...
- python之路----hashlib模块
在平时生活中,有很多情况下,你在不知不觉中,就用到了hashlib模块,比如:注册和登录认证注册和登录认真过程,就是把注册用的账户密码进行:加密 --> 解密 的过程,在加密.解密过程中,用的了 ...
- API和正则表达式
第一章 String & StringBuilderString类用类final修饰,不能被继承,String字符串被创建后永远无法被改变,但字符串引用可以重新赋值,改变引用的指向java字符 ...
- C++ 电路布线/最短路径问题
问题描述 用二维数组表示地图,若值为 1 则表示有障碍物,若值为 0 则表示可以通行. 输入: m*n 的二维数组,布线起点坐标,布线终点坐标. 输出: 最短布线距离以及对应的布线路径. 问题分析 从 ...