Qt编译Oracle OCI驱动
2023-09-11 14:16:57 时间
最近使用qt开发了一个访问数据库的工具, 默认使用ODBC驱动注入的方式,后来发现Oracle中ODBC驱动注入经常失败。
后来就想直接使用OCI方式访问,而默认情况下Qt只有Sqlite和ODBC驱动,OCI需要自己编译安装; 网上有相应的驱动安装介绍,自己实验可行:
编译前置条件:
1. QT源码安装,需要包含src目录中的源码
2. Oracle驱动源码安装, 需要有OCI驱动源码,否则无法编译
环境要求:
QT环境:Qt 5.3.2 /MinGW4.7.2/WIN7 32bit
打开Qt Command Prompt,分别执行以下命令,以编译Oracle驱动:
set INCLUDE=%include%;C:\oracle\product\10.2.0\db_1\OCI\include;C:\Qt\Qt5.3.2\Tools\MinGW\include set LIB=%lib%;C:\oracle\product\10.2.0\db_1\OCI\lib\MSVC cd C:\Qt\Qt5.3.2\5.3.2\Src\qtbase\src\plugins\sqldrivers\oci qmake oci.pro mingw32-make
其中,C:\oracle\product\10.2.0\db_1\OCI\include为Oracle OCI驱动源码所在目录,D:/QT/mingw/include为编译环境的位置。
执行完以上语句,就会生成libqsqloci.a、libqsqlocid.a、qsqloci.dll、qsqlocid.dll四个文件,把它们copy到C:\Qt\Qt5.0.2\5.0.2\mingw47_32\plugins\sqldrivers目录中即可。
在程序中测试:
#include <QCoreApplication> #include <QtSql/QSqlDatabase> #include <QDebug> #include <QStringList> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug()<<“Available drivers:”; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() <<“/t” << driver; return a.exec(); }
可以看到对应的驱动列表:
驱动没有问题之后可以使用以下代码测试下是否可以连通oracle数据库
#include <QCoreApplication> #include <QtSql> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QOCI"); db.setHostName("MY_IP_OR_HOST_NAME"); db.setDatabaseName("XE"); db.setUserName("test"); db.setPassword("test_password"); if (!db.open()) { qDebug() << db.lastError().text(); } else{ qDebug() << "Wow opened"; } return a.exec(); }
相关文章
- Oracle数据库使用出现错误-状态: 失败 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
- Qt-使用QSerialPort实现串口通信
- Qt-QLineEdit使用与说明
- QT-Qt显示GIF图片
- Oracle-查看oracle是否有表被锁
- 【Oracle】修改oracle监听端口
- 《oracle每天一练》Oracle冷备份与数据恢复
- 分析21个 Qt隐藏功能和技巧
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
- 机器学习笔记 - 在QT/PyTorch/C++ 中加载 TORCHSCRIPT 模型
- Qt编写自定义控件68-IP地址输入框
- Qt编写的项目作品11-带频谱的音乐播放器
- Qt编写地图综合应用58-兼容多浏览器内核
- 连接ORACLE数据库,是不是必须要安装oracle客户端的运行时
- Atitit oracle新特性5 6 7 8 9 10 11 12 18 19 20 attilax总结 目录 1.1. :ora 20c1 1.2. Oracle Database 19c 的
- Qt对象模型
- Qt中使用匿名函数lambda表达式
- 解决Ubuntu系统安装QT出错的问题:qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it
- Qt creator 编译错误 :cannot find file .pro qt
- qt交叉编译报错::-1: error: The Qt version is invalid: Qt version is not properly installed,please run make
- Qt 工程 pro文件
- Qt 事件过滤器
- 【Mysql异构实时同步Oracle】OGG12异构同步mysql到oracle(windows mysql实时同步数据到linux oracle)详细文档