Qt访问Oracle数据库的驱动说明

更新时间:2023-09-20 09:14:01 阅读量: 医药卫生 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Qt访问Oracle数据库的驱动编译说明

Qt免费版本没有提供QOCI驱动(Qt访问Oracle的用户接口驱动),因此必须通过利用源代码编译生成QOCI。本文介绍基于不同操作系统(Win7_X64和RHEL6.1_X64)和编译器(Win7+MinGW/VS2008和RHEL+GCC)如何生成QOCI。

一、Win7_X64系统

安装VS2008、qt-win-opensource-4.8.0-vs2008、qt-vs-addin-1.1.10。安装完毕后,则可以实现基于vs2008实现Qt软件开发。

编译生成QOCI时必须用到Oracle的相关文件(oci.lib和oci.h)。如果安装了Oracle11g数据库,则编译所需要的头文件和库文件分别在$ORACLE_HOME\\OCI\\include和$ORACLE_HOME\\OCI\\lib\\MSVC。如果未安装Oracle11g也可从Oracle官网下载instantclient-sdk-nt-11.2.0.3.0.rar,直接解压可以获得所需要的头文件和库文件。(QTDIR=D:\\qt\\4.8.0\\; ORACLE_HOME=E:\\app\\oracle\\product\\11.2.0\\dbhome_1)

1、编译生成QOCI_vs2008

利用vs2008打开D:\\Qt\\4.8.0\\src\\plugins\\sqldrivers\\oci\\oci.pro 设置qsqloci的工程属性,增加头文件oci.h的路径支持

设置qsqloci的工程属性,设置oci.lib路径支持

通过设定configuration manager依次生成QOCI的调试版和发布版。

编译生成Debug版本和Release版本的动态库:

qsqlocid4.dll、qsqlocid4.lib和qsqloci4.dll、qsqloci4.lib。将上述文件拷贝至$QTDIR\\plugins\\sqldrivers文件中即可。 2、编译生成QOCI_MinGW

MinGW编译器采用了QtCreator2.4.1集成的MinGW编译环境。采用了qt-everywhere-opensource-src-4.8.1.tar源代码包。(假设QtCreator的安装路径为D:\\QtSDK,Qt源代码解压路径D:\\qsrc)

开始编译前,需要修改几个环境变量: 在PATH中添加

D:\\QtSDK\\mingw\\bin(备注:mingw32-make路径) D:\\QtSDK\\Desktop\\Qt\\4.8.0\\mingw\\bin(备注:qmake路径)

在LIB中添加

D:\\QtSDK\\Desktop\\Qt\\4.8.0\\mingw\\lib(备注:MinGW库文件路径) E:\\app\\oracle\\product\\11.2.0\\dbhome_1\\OCI\\lib\\MSVC (备注:oci.lib路径) 在INCLUDE中添加

E:\\app\\oracle\\product\\11.2.0\\dbhome_1\\OCI\\include(备注:oci.h路径)

通过cmd进入E:\\qsrc\\src\\plugins\\sqldrivers\\oci\\路径,执行qmake和mingw32-make,如下图

编译后生成的动态库libqsqloci4.a、libqsqlocid4.a、qsqloci4.dll、qsqlocid4.dll

在E:\\qsrc\\plugins\\sqldrivers文件夹中。将上述文件拷贝至Qt目录对应的plugins\\sqldirver中即可。

3、QOCI插件安装

利用上述方法生成QOCI插件。如果开发环境采用的QtCreator集成开发环境(安装路径QTSDK_PATH=D:\\QtSDK\\Desktop\\Qt\\4.8.0),则根据不同的编译器将上述库文件放置在$QTSDK_PATH\\vs2008\\plugins\\sqldrivers或

$QTSDK_PATH\\mingw\\plugins\\sqldrivers下面即可。如果是单独安装的Qt(QTDIR= D:\\Qt\\4.8.0)在放置在$QTDIR\\plugins\\sqldrivers下即可。

4、Oracle访问程序例子

1. #include 2. #include 3. #include 4. #include

5. int main(int argc, char *argv[]) 6. {

7. QCoreApplication a(argc, argv);

8. //////////////////////////////////////////////////// 9. QSqlDatabase db = QSqlDatabase::addDatabase(\10. db.setHostName(\11. db.setDatabaseName(\12. db.setUserName(\13. db.setPassword(\14. db.setPort(1521); 15. if (db.open())

16. printf(\打开成功/n\17. else

18. printf(\打开失败/n\

19. //////////////////////////////////////////////////// 20. QSqlQuery query(\21. while (query.next()) {

22. QString country = query.value(0).toString(); 23. printf(\24. }

25. //////////////////////////////////////////////////// 26. return a.exec(); 27. }

本文来源:https://www.bwwdw.com/article/wbgh.html

Top